clarkbonesMedlem sedan feb. 20012 693 inlägg
Hej! Jag undrar var SQL:en nedan inte returnerar några rader.
Jag har en tabell med konsulter (Tconsultant). För varje lån i TLoan finns en konsult angiven. I
Nu vill jag visa de konsulter som finns i TConsultant, men inte finns i TLoan.
select * from TConsultant where ConsultantID NOT IN (SELECT Distinct ConsultantID FROM TLoan)
Jag vet att det finns tre konsulter som inte finns i TLoan. Dock får jag inga träffar. Varför?
obs! Jag vet att det finns andra sätt att lösa problemet, men jag vill förstå hur subqueryn och IN fungerar syntaktiskt.
LarsGMedlem sedan dec. 200012 465 inlägg
Att ange distinct är helt onödigt och leder eventuellt till en prestandaförsämring.
En anledning till att du inte får träff är att det kan finnas ConsultantID som är null.
clarkbonesMedlem sedan feb. 20012 693 inlägg
LarsG är grym!
Visst fanns det NULL-värden. När jag tog bort dem, fungerade det. Jag är dock inte säker på att jag fattar varför SQL funkar så. Finns det någon naturlig förklaring?
Tack för tipset om distinct också, det ska jag komma ihåg.
LarsGMedlem sedan dec. 200012 465 inlägg
En jämförelse (oavsett operator (= <>, etc)) med något som är null är aldrig sann.