在程式設計或構建中,可能會遇到常常需要根據樹型某個節點,讀取其所有上級或所有下級的情況。然後繫結到樹型部件顯示。
在oracle中,可以用start with ... connect by prior ...來實現。
具體寫法是:
查詢下級:
select*from sa_dept_dict start with dept_id=
2170connect by prior dept_id=upper_id order
by sort_order
查詢下級:
select*from sa_dept_dict start with dept_id=
2170connect by prior upper_id=dept_id order
by sort_order
在sql server 中就要略複雜一些了。需要用with....as...語句,這個語句也叫做子查詢部分(subquery factoring),可以讓你做很多事情,定義乙個sql片斷,該sql片斷會
被整個sql語句所用到。有的時候,是為了讓sql語句的可讀性更高些,也有可能是在union all的不同部分,作為提供資料的部分。
下面我們就用with 結合 union 來查詢樹型的上級和下級:
查詢下級:
with tree as (select*from sa_dept_dict where dept_id=
2016union
allselect a.*
from sa_dept_dict as a,tree as b where b.dept_id=a.upper_id ) select
*from tree order
by sort_order
查詢上級:
with tree as (select*from sa_dept_dict where dept_id=
2016union
allselect a.*
from sa_dept_dict as a,tree as b where a.dept_id=b.upper_id ) select
*from tree order
by sort_order
原文出處:
SQL查詢無限層級結構的所有下級,所有上級
無限層級結構的table1表,id 主鍵 parentid 父級id 查詢某個id的所有下級或所有上級,使用with as,union all 查詢 1 查詢id為1所有的下級 with t as select from table1 where id 1 union all select a.fr...
獲取指定路徑下所有檔案生成樹型結構列表
本文介紹如何使用簡單的方法生成檔案目錄下的清單檔案.tree tree是windows作業系統專門用來以圖形方式顯示驅動器或路徑的資料夾結構的命令,它是dos命令,它顯示的檔案目錄按照樹型顯示,非常的直觀,就像乙個分支表。命令格式為 tree drive path f a 各引數的分別為 這裡我們利...
sql 孩子兄弟表示法 所有子節點 樹和二叉樹簡介
樹的定義 為了保證資料的能夠有效的查詢,可以使用順序結構。為了保證資料的插入效率,我們可以使用鏈型結構。但在某些場合,我們需要同時兼顧查詢效率和插入的效率,應該怎麼做?樹 tree 型結構是一類常用的高效的非線性的資料結構,兼顧了順序表的查詢效率和鍊錶的插入效率。例如我們電腦中的目錄結構,採用的就是...