oracle提供了一種樹形結構用來實現層次查詢:
start with :指定記錄是根節點的條件。根節點可以有多個。
connect by :指定記錄之間是父節點和子節點關係的條件。查詢出含有子節點的父節點的條件
prior :指定父節點記錄的引用。
siblings :指定樹的排序。同一父節點下的兄弟節點的順序。
樹在資料庫表中的儲存結構,如下:
create table tree (
id number not null, //主鍵
pid number not null, //父節點id
order_id number not null, //排序id
node_name varchar2(100) not null, //節點名稱
del varchar2(5), //刪除標識 1:為刪除
constraint pk_tree primary key (id)
);
例項sql語句如下:
select * from tree where del <> 1 start with pid = 0 and del <> 1
connect by prior id = pid and del <> 1 order siblings by order_id
查詢出來的結果就是按樹排序的記錄集。
如果用到了邏輯刪除(假刪除),那麼上述sql語句中三處的del <> 1的意義是不同的。第一處是在表中全部記錄中篩選出沒有被標記刪除的記錄(縮短生成樹的計算範圍),第二處是篩選出根節點沒有被標記刪除的根節點的記錄,第三處是是篩選出含有子節點的父節點沒有被標記刪除的父節點的記錄
sql樹形結構
create temporary table treeview id varchar 20 org name varchar 20 parent org id varchar 20 org code varchar 20 insert into treeview id,org name,parent...
Oracle與Oracle的SQL操作語句
oracle 也是一種資料庫管理系統 儲存結構分類 邏輯儲存結構,物理儲存結構 邏輯儲存結構 資料塊 資料塊是oracle邏輯儲存結構的最小邏輯結構,乙個資料塊對應乙個或多個物理塊,資料塊的結構包括塊頭和儲存區的兩個部分 塊頭包括 資料塊標題,表目錄,行目錄 儲存區 自由空間,行資料 資料區 資料區...
樹形結構的sql語句
1 進行資料查詢 select datakey id,agencyid agencyid,ctlg name name,pid pid,ctlg code code from fa b assctlg start with pid connect by prior datakey pid order...