webForumDet fria alternativet

Problem med dubletter

3 svar · 431 visningar · startad av Vinnaren

VinnarenMedlem sedan sep. 2005833 inlägg
#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

LarsGMedlem sedan dec. 200012 464 inlägg
#2

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

VinnarenMedlem 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

VinnarenMedlem sedan sep. 2005833 inlägg
#4

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

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