之前一直有這麼乙個問題總是覺得不能用sql直接解決:資料庫裡面儲存了樹形結構,並且每一層都按乙個orderby欄位排序,怎麼使用乙個sql直接查出樹形結構從上到下的順序呢?今天終於有時間研究了一下,下面把資料庫結構和sql貼出來大家一起參考一下。
首先說說我們的資料結構:機構表sys_organization(id,parent_organ,organ_******_name,orderby),部門表sys_department(id,parent_department,sys_organization,department_name,orderby)(因為部門是掛在機構下面的,對於上級部門即parent_department為空的那些部門則是直接掛在機構下面,而parent_department不為空的話則是掛在部門下面),使用者表sysuser(id,sys_department,user_name,orderby)(對於使用者則是直接掛在部門下面的)
select rs.*,level from (
select 'org'||org.id id,'org'||org.parent_organ pid,org.organ_******_name showname,org.orderby orderby from sys_organization org where org.is_valid=1
union all
select 'dep'||dep.id id,'org'||dep.sys_organization pid,dep.department_name showname,dep.orderby orderby from sys_department dep where dep.is_valid=1 and dep.parent_department is null
union all
select 'dep'||dep.id id,'dep'||dep.parent_department pid,dep.department_name showname,dep.orderby orderby from sys_department dep where dep.is_valid=1 and dep.parent_department is not null
union all
select 'usr'||su.id id,'dep'||su.sys_department pid,su.user_name showname,su.orderby orderby from sysuser su where su.is_valid=1
)rs connect by rs.pid=prior rs.id start with rs.id='org1' order siblings by rs.orderby
這樣就可以查出按機構部門使用者構成樹,同時內部使用orderby排序順序的乙個查詢結果
查詢機構部門使用者樹
首先說說我們的資料結構 機構表sys organization id,parent organ,organ name,orderby 部門表sys department id,parent department,sys organization,department name,orderby 因為部...
機構使用者管理
通過 系統管理 機構使用者管理 可以進入機構和使用者管理介面。基本概念 機構是指組織內部的組成結構,機構按照樹形結構組成上下級關係。使用者可以屬於機構樹中的任意乙個機構,並非只能屬於最下級機構。但每個使用者只能屬於乙個機構。機構管理 機構的基本資訊包括 機構編碼 機構名稱 機構描述 上級機構。對機構...
同步機構使用者的思路和注意點。
同步機構使用者的思路和注意點。目錄 一 先把機構同步過去 二 再把使用者同步過去。三 注意點 1 按著以下順序按著時間戳去同步操作 新增,修改,刪除 最後還在使用者刪除之後 1 按著以下順序按著時間戳去同步操作 新增,修改,刪除。1 要設定好時間戳,比如設定時間提前半個小時,這樣不會漏掉某一條資料,...