webForumDet fria alternativet

Villkor i Join

Databaser & SQLur Databashanterare & SQL

2 svar · 412 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#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

Medlem sedan aug. 20039 342 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.

Medlem sedan jan. 20013 582 inlägg
#3

Tack!

142 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)