Re: [SQL ] 樹狀結構表 是否顯示只寫在根節點
參考: 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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章