我有一個問題,我試圖解決,我認爲不同於我在此處研究過的其他SQL鄰接列表層次結構問題。我試圖對數據進行分類,以便所有的孩子都在他們的父母面前被列出。我已經有CTE返回給定ParentID的所有孩子和給定ChildID的所有父母,但那些不符合我目前的需要。SQL 2012 - 公共表表達式 - 層次結構 - 列出所有孩子在父母面前
我有兩個表:ItemMaster.ItemID之間存在References.ParentID
CREATE TABLE [dbo].[ItemMaster](
[ItemID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
CREATE TABLE [dbo].[References](
[RefID] [int] IDENTITY(1,1) NOT NULL,
[ParentID] [int] NOT NULL,
[ChildID] [int] NOT NULL,
外鍵關係和References.ChildID
這裏從我的表是一些示例數據...
ItemID,Name
- 1,A1
- 2,A2
- 3,A3
- 4,P1
- 5,P2
- 6,P3
- 7,P4
- 8,TOP
REFID,PARENTID ,ChildID
- 1,1,5
- 2,2,5-
- 3,2,6
- 4,3,2
- 5,7,3
- 6,8,4
- 7,8,1
- 8,8,2
- 9,8,3
- 10,8,7
我想會列出每個項目的輸出在任何父母面前列出的孩子的ID和姓名。像這樣...
的ItemID,名稱
- 4,P1
- 5,P2
- 6,P3
- 1,A1
- 2,A2
- 3, A3
- 7,P4
- 8,頂部
注:
- 任何的ItemID可以具有0,1或> 1的父母。
- 那些沒有父母的人將被列在輸出的頂部。
- 我沒有參考表中「最頂級父母」的NULL值。
我希望我已經提供了足夠多的細節,並且給自己解釋得足夠多,以獲得一些反饋。任何想法將不勝感激!
歡迎的SO。非常感謝您證明您是如何嘗試解決問題的,否則看起來您只希望我們爲您編寫代碼。 –