webForumDet fria alternativet
Logga in / Bli medlem

Problem med dubletter

Databaser & SQL

3 svar · 433 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#1

Har följande:

	SELECT c.ChildId, (c.LastName + ', ' + c.FirstName) AS Name, c.Picture, c.Birthday,  d.Name AS DepartmentName, isnull(s.Firstname+ ', ' + isnull(s.LastName, ''),'Saknas') AS StaffName, isnull(p1.Firstname+ ', ' + isnull(p1.LastName, ''),'Saknas') AS Parent1Name, isnull(p2.Firstname+ ', ' + isnull(p2.LastName, ''),'Saknas') AS Parent2Name
	FROM Child AS c

	INNER JOIN Department AS d
	ON c.DepartmentId = d.DepartmentId

	LEFT OUTER JOIN Staff AS s
	ON c.StaffId = s.StaffId

	LEFT OUTER JOIN ParentToChild AS ptc1
	ON c.ChildId = ptc1.ChildId

	LEFT OUTER JOIN Parent AS p1
	ON ptc1.ParentId = p1.ParentId

	LEFT OUTER JOIN ParentToChild AS ptc2
	ON c.ChildId = ptc2.ChildId AND ptc2.ParentId != p1.ParentId

	LEFT OUTER JOIN Parent AS p2
	ON ptc2.ParentId = p2.ParentId

	WHERE c.DepartmentId = @DepartmentId or @departmentId = 0

	ORDER BY c.LastName ASC, c.FirstName ASC

Denna fråga returnerar samma Child två gånger om den har två parent. Har provat med distinct, men blir ingen skillnad. Någon som har en lösning??

Tacksam för all hjälp :stud

Medlem sedan dec. 200012 464 inlägg
#2

Vilka kolumner är dubletter? Vilket av värdena vill du ha för de övriga kolumnerna?

Medlem sedan sep. 2005833 inlägg
#3

problemet ligger på:

isnull(p1.Firstname+ ', ' + isnull(p1.LastName, ''),'Saknas') AS Parent1Name, 
isnull(p2.Firstname+ ', ' + isnull(p2.LastName, ''),'Saknas') AS Parent2Name

När en child har två parent, så kan det bli såhär
Name-----Parent1Name-------Parent2Name
Bo Ek-----Eva Ek-------------Nisse EK
Bo Ek-----Nisse Ek------------Eva Ek

Medlem sedan sep. 2005833 inlägg
#4

löste det med en case sats. (y)

261 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)