Sql присъединяването показва нулева стойност

Имам 2 sql таблици mtblSite_Lavel_Budget и mtblExpenditure_Site_Lavel. Искам да се присъединя към тях, затова написах заявката по-долу, но една колона винаги дава нулев резултат, въпреки че има стойности в това поле.

въведете описание на изображението тук

въведете описание на изображението тук

Заявката е както по-долу

select mtblExpenditure_Site_Lavel.SFTI_Id, 
mtblExpenditure_Site_Lavel.Site_Lavel_Interventions, 
mtblExpenditure_Site_Lavel.Sub_Site_Lavel_Interventions,
mtblExpenditure_Site_Lavel.Bill_No, mtblExpenditure_Site_Lavel.Date_Of_Bill,
mtblExpenditure_Site_Lavel.Eligible_Exp,
mtblExpenditure_Site_Lavel.Non_Eligible_Exp,
mtblExpenditure_Site_Lavel.Total,
mtblExpenditure_Site_Lavel.Physical_Progress,
mtblSite_Lavel_Budget.Sanction_Amount_DPR  
from mtblExpenditure_Site_Lavel 
left join mtblSite_Lavel_Budget 
   on mtblExpenditure_Site_Lavel.Sub_Site_Lavel_Interventions= mtblSite_Lavel_Budget.Sub_Site_Lavel_Interventions 
WHERE mtblExpenditure_Site_Lavel.SFTI_Id =13 
ORDER BY Date_Of_Bill desc

и резултатът е както по-долу

въведете описание на изображението тук

Моля за съвет относно проблема.


person Gaurav    schedule 06.12.2013    source източник
comment
Причината, поради която дава нули, е, че присъединяването не върна никакви резултати, т.е. не сте получили редовете в обединената таблица; по принцип вашата клауза за присъединяване е грешна. Вашият код не дава достатъчно информация за допълнителна помощ, страхувам се.   -  person Luaan    schedule 06.12.2013
comment
бихте ли разяснили, моля? защо това присъединяване е грешно?   -  person Gaurav    schedule 06.12.2013
comment
това са стойности на nvarchar   -  person Gaurav    schedule 06.12.2013
comment
@Гаурав. Стойностите в mtblExpenditure_Site_Lavel.Sub_Site_Lavel_Interventions и mtblSite_Lavel_Budget.Sub_Site_Lavel_Interventions не са равни, така че вашето съединение не връща нищо от втората таблица   -  person Filipe Silva    schedule 06.12.2013
comment
присъединяването, което напуснахте, извлича всички записи от mtblExpenditure_Site_Lavel независимо от съвпадението на mtblSite_Lavel_Budget. като такива никакви съвпадения не връщат нули   -  person lemunk    schedule 06.12.2013
comment
проверете дали полетата, които отговаряте, действително съвпадат и публикувайте резултати   -  person lemunk    schedule 06.12.2013
comment
съвместното условие за mtblExpenditure_Site_Lavel.Sub_Site_Lavel_Interventions= mtblSite_Lavel_Budget.Sub_Site_Lavel_Interventions правилно ли е?   -  person ray    schedule 06.12.2013
comment
По принцип, предвид вашите данни, няма редове в mtblSite_Lavel_Budget, които да имат Sub_Site_Lavel_Interventions от Distribution panelling, например.   -  person Luaan    schedule 06.12.2013
comment
тогава какво да правя. Ако харесвам от mtblExpenditure_Site_Lavel ляво, присъединете се към mtblSite_Lavel_Budget на mtblExpenditure_Site_Lavel.sfti_id = mtblSite_Lavel_Budget.sfti_id. показва записи, но показва двойни записи, имам предвид вместо два записа показва 4 (2 дублирани записа)   -  person Gaurav    schedule 06.12.2013
comment
Това вероятно е така, защото stfi_id означава нещо друго, отколкото си мислите. Начинът, по който ми се струва, NULL е правилната стойност за връщане в тази колона, тъй като няма подходящи данни в бюджетната таблица. Ако единственото нещо, което ви притеснява, е фактът, че има NULL вместо 0, можете да използвате coalesce(mtblSite_Lavel_Budget.Sanction_Amount_DPR, 0) as [Sanction_Amount_DPR] вместо само mtblSite_Lavel_Budget.Sanction_Amount_DPR.   -  person Luaan    schedule 06.12.2013
comment
но пак същите резултати   -  person Gaurav    schedule 06.12.2013
comment
Изразете това, което се опитвате да направите, с думи. Не сте наясно с целта си и защо резултатите, които получавате, не са резултатите, които очаквате. Какво бихте искали да имате в тази колона?   -  person Luaan    schedule 06.12.2013


Отговори (1)


Опитайте тази

   from mtblExpenditure_Site_Lavel left join  mtblSite_Lavel_Budget on 
       mtblExpenditure_Site_Lavel.sfti_id = mtblSite_Lavel_Budget.sfti_id 

Мисля, че е объркващо, тъй като се присъединявате към низова колона, винаги е най-добре да се присъединявате към идентификатора, където е възможно.

person DaImTo    schedule 06.12.2013
comment
показва записи, но показва двойни записи, имам предвид вместо два записа показва 4 (2 дублиращи се записа) - person Gaurav; 06.12.2013
comment
това е проблем с нашите ключове, ако имате непълно присъединяване, това може да дублира стойност. Имате ли друг ключ, който бихте могли да свържете (sno_id?) В противен случай, ако сте принудени да свържете към низ, не е перфектно, но може да е възможно. Във вашата схема, ако имате колона с алфа номер, опитайте да ги запазите като char(x), а не като varchar и никога max! когато сравнявате, внимавайте да правите upper, ако е чувствителен към главни и малки букви и се страхувате от тази грешка, Ltrim и rtrim, за да сте сигурни, че няма да ви дразни празно... и накрая вземете пример, който трябва да работи, и проверете ключа си ръчно, ако е грешка от вие или вашите данни - person Mathese F; 06.12.2013