Oto przykład struktura tabeli:Jak pokazują rekurencyjną parentId w pojedynczej kolumny w SQL
ID Name ParentID
-----------------------
1 Ancestor NULL
2 GrandFather 1
3 GrandMother 1
4 Child 3
Próbuję napisać kwerendę, która wróci
ID Name Family
----------------------------
1 Ancestor
2 GrandFather Ancestor
3 GrandMother Ancestor
4 Child Ancestor^GrandMother
Tricky część jest taka, że chcę pokazać rodzinę wszystkich rzędów w kolejności od góry do dołu.
Jeśli ktoś może wskazać mi w dobrym kierunku, to należy zauważyć :)
EDIT :: To jest prawdziwa zapytań, ale wynika z tego samego pomysłu. zwraca błąd na linii: marketparent.family + '^' + t2.marketGroupName bo mogę to znaleźć marketparent
WITH marketparent (marketGroupID,parentGroupID, marketGroupName,family)
AS
(
SELECT marketGroupID,
parentGroupID,
marketGroupName,
'' as family
FROM EVE.dbo.invMarketGroups
WHERE parentGroupID IS NULL
UNION ALL
SELECT t2.parentGroupID,
t2.marketGroupID,
t2.marketGroupName,
marketparent.family + '^'+ t2.marketGroupName
FROM EVE.dbo.invMarketGroups as t2
INNER JOIN marketparent as mp
ON mp.marketGroupID = t2.parentGroupID
)
-- Statement using the CTE
SELECT TOP 10 *
FROM marketparent;
Rozwiązanie będzie zależeć od używanego DBMS. SQL Server, Oracle, MySQL lub ....? –
Używam SQL Server 2008 – darthun08
Użyj aliasu 'mp' zamiast' marketparent'. –