sql查詢樹
1. sql怎麼實現樹查詢
表格式如下:
cid pid cname
1 0 董事長
2 1 CEO
3 2 銷售經理
4 2 IT經理
5 2 運營經理
6 3 銷售主管
7 4 IT主管
8 5 運營主管
9 6 業務員
10 7 程序員
11 8 運營員
create function get_detail(
@id int
)returns @re table(id int,level int)
as
begin
declare @l int
set @l=0
insert @re select @id,@l
while @@rowcount>0
begin
set @l=@l+1
insert @re select a.cid,@l
from table_2 a,@re b
where a.pid=b.id and b.level=@l-1
end
return
end
go
--調用(查詢所有的子)
select a.*,level=b.level from table_2 a,get_detail(2)b where a.cid=b.id
2. 關於SQL查詢樹結構數據的語句
方法1:
是否可以有代表層次的欄位,若有,直接根據層次欄位查詢;
方法2:
是否存在以下假設:
非父級的dept_uid的 不可能 在 parent_uid 中出現。
如果假設成立,在查出的所有dept_uid中去掉,所有在在 parent_uid 中出現id,
剩下的就是你要的了。
3. sql 查詢 tree
很高興回答你的問題
根據你的需求,寫的SQL如下:
select id,LPAD(name,LENGTH(name)+(LEVEL*10),' ')
from table_name
where 1=1 start with fid is null connect by PRIOR id=fid;
根據你的問題補充:
select id from table_name where id not in(
select id
from table_name
where 1=1 start with id=1 connect by PRIOR id=fid);上邊這個sql就查詢出來當id=1的時候,能作為它上級的id,
希望對你有所幫助!
4. 如何用sql語句實現樹形的資料庫表查詢
如果樹的層數固定就可以用語句查詢,但效率比較低。例如你說的三層:
select id,v2.name+name from t1 inner join
(select id,v1.name+name as name from t1 inner join
(select id,name from t1 where parentid = 0) v1 on t1.parentid = v1.id) v2 on t1.parentid = v2.id
5. sql 查詢樹形數據。
如果樹的層數固定就可以用語句查詢,但效率比較低。例如你說的三層:
select id,v2.name+name from t1 inner join
(select id,v1.name+name as name from t1 inner join
(select id,name from t1 where parentid = 0) v1 on t1.parentid = v1.id) v2 on t1.parentid = v2.id
6. 關於sql server中的樹查詢
就用with遞歸,根節點等級為0,遞歸時每級+1
7. SQL語句實現子孫樹查詢經典實例
下面介紹的SQL語句非常經典,該SQL語句實現子孫樹查詢,該SQL語句可以直接在查詢分析器中執行,供您參考。
--生成表
create table MENU(id int,mname char(50),parent int)
--插入數據
insert into MENU
select 1,'新聞',Null union all
select 2,'房產',Null union all
select 3,'科技新聞',1 union all
select 4,'社會新聞',1 union all
select 5, 'IT新聞',3 union all
select 6, '航天新聞',3
--實現查詢新聞子孫樹
Declare @s varchar(1000)
select @s=','+cast(id as varchar(20))+'' from MENU where id=1 while @@rowCount>0
--charindex:返回字元串中指定表達式的起始位置
select @s=@s+','+cast(id as varchar) from MENU
where charindex(','+cast(id as varchar)+',',@s+',')=0
and charindex(','+cast(parent as varchar)+',',@s+',')>0
select * from MENU where charindex(','+cast(id as varchar)+',',@s+',')>0
--刪除表
drop table MENU
8. 如何用SQL解決樹查詢問題,急!!!
oracle中的select語句可以用START WITH...CONNECT BY PRIOR子句實現遞歸查詢,connect by 是結構化查詢中用到的,其基本語法是:
select * from tablename start with cond1
connect by prior cond2
where cond3;
簡單說來是將一個樹狀結構存儲在一張表裡,比如一個表中存在兩個欄位:
id,parentid。那麼通過表示每一條記錄的parent是誰,就可以形成一個樹狀結構。
用上述語法的查詢可以取得這棵樹的所有記錄。
其中COND1是根結點的限定語句,當然可以放寬限定條件,以取得多個根結點,實際就是多棵樹。
COND2是連接條件,其中用PRIOR表示上一條記錄,比如 CONNECT BY PRIOR ID=PRAENTID就是說上一條記錄的ID是本條記錄的PRAENTID,即本記錄的父親是上一條記錄。
COND3是過濾條件,用於對返回的所有記錄進行過濾。
9. sql組織機構樹查詢
組織等級是四層,應該顯示四列才完整
createtablestat(codevarchar(10),parentvarchar2(10),slevelvarchar(10));
INSERTINTOSTATVALUES('中國','0','國家');
INSERTINTOSTATVALUES('浙江省','中國','省');
INSERTINTOSTATVALUES('江蘇省','中國','省');
INSERTINTOSTATVALUES('杭州市','浙江省','市');
INSERTINTOSTATVALUES('南京市','江蘇省','市');
INSERTINTOSTATVALUES('西湖區','杭州市','縣/區');
INSERTINTOSTATVALUES('玄武區','南京市','縣/區');
SELECTA.PARENT,A.CODE,B.CODE,C.CODE
FROMSTATA,STATB,STATC
WHEREA.CODE=B.PARENT
ANDB.CODE=C.PARENT
ANDA.PARENT='中國';
PARENTCODECODECODE
----------------------------------------
中國浙江省杭州市西湖區
中國江蘇省南京市玄武區