Dưới đây là cấu trúc ví dụ về bảng:Làm thế nào để hiển thị ParentID đệ quy trong một cột duy nhất trong SQL
ID Name ParentID
-----------------------
1 Ancestor NULL
2 GrandFather 1
3 GrandMother 1
4 Child 3
Tôi đang cố gắng để viết một truy vấn mà sẽ trở
ID Name Family
----------------------------
1 Ancestor
2 GrandFather Ancestor
3 GrandMother Ancestor
4 Child Ancestor^GrandMother
Các khó khăn một phần là tôi muốn hiển thị họ của tất cả các hàng và theo thứ tự từ trên xuống.
Nếu bất cứ ai có thể chỉ cho tôi đi đúng hướng, nó sẽ được đánh giá cao :)
EDIT :: Đây là câu hỏi thật, nhưng nó theo ý tưởng tương tự. nó sẽ trả về một lỗi trên dòng: marketparent.family + '^' + t2.marketGroupName bởi vì nó không thể tìm thấy 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;
Các giải pháp sẽ phụ thuộc vào DBMS bạn sử dụng. SQL Server, Oracle, MySQL hoặc ....? –
Tôi đang sử dụng SQL Server 2008 – darthun08
Sử dụng bí danh 'mp' thay vì' marketparent'. –