下面是表的結構例:如何在SQL顯示遞歸的parentID在單個列
ID Name ParentID
-----------------------
1 Ancestor NULL
2 GrandFather 1
3 GrandMother 1
4 Child 3
我想編寫一個查詢,將返回
ID Name Family
----------------------------
1 Ancestor
2 GrandFather Ancestor
3 GrandMother Ancestor
4 Child Ancestor^GrandMother
棘手部分是我想要以自上而下的順序顯示所有行的家族。
如果任何人都可以在正確的方向指向我,我們將不勝感激:)
編輯::這是真正的查詢,但它遵循了同樣的想法。它返回的行錯誤:marketparent.family + '^' + t2.marketGroupName,因爲它無法找到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;
該解決方案將取決於您使用的DBMS。 SQL Server,Oracle,MySQL或....? – 2012-04-16 15:02:40
我使用SQL Server 2008 – darthun08 2012-04-16 15:13:11
使用別名'mp'而不是'marketparent'。 – 2012-04-16 16:48:41