webForumDet fria alternativet

Villkor i Join

2 svar · 412 visningar · startad av devotion

devotionMedlem sedan jan. 20012 711 inlägg
#1

Hej,

Jag har en fråga som ser ut så här:

 SELECT TOP 1 t.[Id] 
 FROM ((tblTask t INNER JOIN tblObject o ON o.[Nr] = t.[Object1Nr]) INNER JOIN tblExtraFieldData ed ON o.[Id] = ed.[OwnerId]) 
	LEFT JOIN tblDocRef dr 
		ON t.[Id] = dr.[OwnerId] 
	LEFT JOIN tblDocument d 
		ON d.Id = dr.DocId 
	INNER JOIN tblTodo td 
		ON td.OwnerId = t.[Id] 
			AND td.OwnerType = 2 
			AND td.DefId = 10004 
			AND td.CompletedBy <> '' 
WHERE (d.Id IS NULL OR d.BinDocType = 'pdf') 
	AND t.[Id] = 27106 
	AND t.[Status] = 4 
	AND t.[Priority] IN (3) 
	AND ed.[FieldId] = 10054 
	AND Charindex ( '@', ed.[Value] ) <> 0

Denna joinen:

	INNER JOIN tblTodo td 
		ON td.OwnerId = t.[Id] 
			AND td.OwnerType = 2 
			AND td.DefId = 10004 
			AND td.CompletedBy <> ''

Det enda som är intressant, är om om det blir en matchning skall completedBy inte vara tom.

Har jag skrivit rätt då?

Finns det ingen matchning skall villkoret inte vara med...

Mvh
Henrik

nitro2k01Medlem sedan aug. 20037 630 inlägg
#2

Om jag inte förstår dig helt fel så är det nog en left join du vill ha. Med en inner join försvinner alla rader i tblTask som inte uppfyller hela join-kriteriet. Med en left join får du ut alla rader från tblTask, men om det finns matchningar i tblTodo måste de uppfylla alla kriterierna för att komma med.

devotionMedlem sedan jan. 20012 711 inlägg
#3

Tack!

Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb