Re: [SQL ] 樹狀結構表 是否顯示只寫在根節點

看板Database (資料庫)作者 (可愛小孩子)時間7年前 (2017/03/14 16:53), 編輯推噓2(200)
留言2則, 1人參與, 最新討論串2/2 (看更多)
參考: https://technet.microsoft.com/zh-tw/library/ms186243(v=sql.105).aspx 解法如下: -- 測資部份(紅色部份稍改一下,就可以測你想要的狀況了) ;with tb1 as ( select 1 as ID,null as PARENT_ID,cast(null as bit) as IS_SHOW union all select 2,1,null union all select 3,2,null union all select 4,3,null union all select 5,4,null union all select 6,5,null union all select 7,6,0 union all select 8,2,1 union all select 9,2,0 ), -- CTE recursive 部份 tb2 as ( select ID,PARENT_ID from tb1 where is_show = 1 union all select t1.ID,t1.PARENT_ID from tb1 t1 inner join tb2 t2 on t1.ID = t2.PARENT_ID ) -- 重覆 ID 只顯示一次 select distinct ID from tb2 ※ 引述《hirabbitt (兔子)》之銘言: : 資料庫名稱:MS SQL : 資料庫版本:2012 : 內容/問題描述: : 例如表長這樣 畫起來就會像這樣(只要黃色部份 : ID PARENT_ID IS_SHOW root : 1 null null └1 : 2 1 null └2 : 3 2 null ├3 : 4 3 null │└4 : 5 4 null │ └5 : 6 5 null │ └6 : 7 6 false │ └7 : 8 2 ture ├8 : 9 2 false └9 : 輸出:1 : 2 : 8 : 例如表長這樣 畫起來就會像這樣(只要黃色部份 : ID PARENT_ID IS_SHOW root : 1 null null └1 : 2 1 null └2 : 3 2 null ├3 : 4 3 null │└4 : 5 4 null │ └5 : 6 5 null │ └6 : 7 6 true │ └7 : 8 2 ture ├8 : 9 2 false └9 : 輸出:1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : is_show 表示: : null = 非根節點 : false = 根節點 不show : true = 根節點 要show : 資料量大約在5000筆 : 層數分佈在5~7層之間 : 有什麼方法可以快速找到需要顯示的所有節點嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.233.210 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1489481604.A.0CE.html

03/14 16:54, , 1F
感謝!! 我來研究看看
03/14 16:54, 1F

03/14 17:38, , 2F
有用~ 問題解決了~
03/14 17:38, 2F
文章代碼(AID): #1Onw-43E (Database)
文章代碼(AID): #1Onw-43E (Database)