webForumDet fria alternativet

Distinct i Common Table Expressions CTE

5 svar · 468 visningar · startad av Bjuris

BjurisMedlem sedan juli 2001514 inlägg
#1

Jag har äntligen installerat 2005 och testar lite med CTE
Har dock ett problem och det är att disinct inte fungerar som jag har tänkt mig...

WITH StudentsHierarchy(SystemID1, GroupID, AccessType, AccessGroupID, StudentID, HierarchyLevel) AS
(
	--Base Case
	SELECT 
		SystemID,
		GroupID,
		AccessType,
		AccessGroupID,
		StudentID,
		1 as HierarchyLevel
	FROM UserGroup a

	UNION ALL

	--Recursive step
	SELECT 
		u.SystemID,
		u.GroupID,
		u.AccessType,
		u.AccessGroupID,
		u.StudentID,	
		uh.HierarchyLevel + 1 as HierarchyLevel
	FROM UserGroup u
		INNER JOIN StudentsHierarchy uh ON
			u.GroupID = uh.AccessGroupID

)
Select sh.SystemID1, sh.GroupID, sh.AccessType, sh.AccessGroupID, sh.StudentID, sh.HierarchyLevel, (select StudentName from Student s
		where sh.StudentID = s.StudentID) AS StudentName from StudentsHierarchy sh
	WHERE AccessType = 'S'

Skulle vilja ha en distinct på studentID i.e.:

Select DISTINCT sh.StudentID, sh.SystemID1, sh.GroupID, sh.AccessType, sh.AccessGroupID, sh.StudentID, sh.HierarchyLevel, (select StudentName from Student s
		where sh.StudentID = s.StudentID) AS StudentName from StudentsHierarchy sh
	WHERE AccessType = 'S'
BjurisMedlem sedan juli 2001514 inlägg
#2

får man bumpa denna?
Projektet har legat lite på is ett tag, men nu så skall det göras klart. Dock så har jag fortfarande ingen lösning på det här problemet...

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Vad menar du med distinct studentid? Distinct appliceras alltid på alla värden i en resultatpost.

Ge exempel på datainnehåll ojh förväntat resultat.

BjurisMedlem sedan juli 2001514 inlägg
#4

Ok.

Det är så att en student kan finnas i fler grupper.
Användaren har i sin tur tilldelats åtkomst till grupper och/eller enstaka studenter.

Nu vill jag lista alla studenter som användaren har rätt att se.
Jag har förstått nu i efterhand att distinct är på hela resultatet och iom att AccessType, AccessGroup, Hierarchylevel mm kommer att vara olika så får jag alltså fler poster per student.

Men som sagt så vill jag bara ha en post per student som användaren har rätt att se.
Jag skulle kunna göra det enklare då jag i det här fallet egentligen bara behöver StudentName, StudentID och BirthDate, men jag vill ha en så generell lösning som möjligt så att jag kan använda denna sp senare när jag vill ha ut all data.

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Du får ju välja. jag kan inte se att du kan lösa båda kraven i samma fråga.

BjurisMedlem sedan juli 2001514 inlägg
#6

Oki.

Kör en kontroll i min Collection som jag får tillbaka istället.

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