1樓:匿名使用者
必須設定 好表的 parentid,id 第一級設定為 0with t1 as (
select treelevel = 1, parentid, id,cast(1 as varchar(20)) rownum from 表 where id=0
union all
select treelevel = treelevel + 1, t2.parentid,t2.id,cast(t1.
rownum+'.'+cast(row_number() over (order by t2.itemid) as varchar(10)) as varchar(20)) rownum from 表 t2 join t1 on t2.
parentid=t1.id
)select * from t1 order by rownum
2樓:
研究下 connect by 感覺可以實現
3樓:匿名使用者
使用儲存過程吧:
也是列舉思想,不過使用指標實現!!
不知道還有沒有其他高見!!
sql樹形層級查詢? 10
4樓:呼嘯的寶馬小跑
你好的!
oracle 的start with connect by別的資料庫用cte 遞迴都能達到你要的效果!
望採納~
5樓:雲南新華電腦學校
註釋:1,comm_dept ---->資料表2,dept_id------>表主鍵欄位3,parent_dept_id -------->父資料的主鍵欄位4,parent_dept_id=0------->新建立的資料,預設設定該欄位為0
6樓:節子不哭
用這種方式,每次只能查到一個級別,把幾個sql拼接起來就行了。
select connect_by_root(t.name) city_name,
t.name
from table t
where t.name = '電子公章'
start with parent_id = 職能管理的idconnect by hierarchy_id= t.parent_id
sqlserver查詢樹形結構的所有子節點
7樓:匿名使用者
用標準sql的with實現遞迴查詢(sql2005以上肯定支援,sql2000不清楚是否支援):
with subqry(id,name,pid) as (select id,name,pid from test1 where id = 5
union all
select test1.id,test1.name,test1.pid from test1,subqry
where test1.pid = subqry.id)select * from subqry;
8樓:匿名使用者
select * from tablename where pid=@pid
9樓:
1 set ansi_nulls on
2 go
3 set quoted_identifier on
4 go
5 6 create function [dbo].[fn_getsubcasnotree](@cas_no varchar(20))
7 returns @cas table
8 (9 cas_no varchar(20) collate database_default,這個不加sql2000會報錯。
10 level int
11 )
1213 as
14 begin
15 declare @level int
16 set @level = 1
17 insert into @cas select @cas_no , @level
18 while @@rowcount > 0
19 begin
20 set @level = @level + 1
21 insert into @cas select a.cas_no , @level
22 from casn a , @cas b
23 where a.up = b.cas_no and b.level = @level - 1
24 end
25 return
26 end
sql 查詢樹形資料。
10樓:匿名使用者
你的問題是怎麼從 部門表中獲得全稱
select id,deptname from(select id,connect_by_isleaf "isleaf",
sys_connect_by_path(name, '/') "deptname"
from dept
start with parentid = 0connect by prior id = parentid;
) xx where xx.isleaf = 1/** start with 最高階部門 ,如果最高部門是一營就應該 start with parentid = 0如果最高部門為司令部 且parentid 是null就應該 start with parentid is null**/
11樓:匿名使用者
如果樹的層數固定就可以用語句查詢,但效率比較低。例如你說的三層:
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
12樓:匿名使用者
oracle 有 start with ... connect by 的語法
sqlserver沒有,必須自己寫儲存過程實現。
sql server樹形結構表統計每一級樹形下的所有子集數,
13樓:情又獨中
有如下資料表
create table tb(id varchar(3) , pid varchar(3) , name varchar(10));
insert into tb values('001' , null , '廣東省');
insert into tb values('002' , '001' , '廣州市');
insert into tb values('003' , '001' , '深圳市') ;
insert into tb values('004' , '002' , '天河區') ;
insert into tb values('005' , '003' , '羅湖區');
insert into tb values('006' , '003' , '福田區') ;
insert into tb values('007' , '003' , '寶安區') ;
insert into tb values('008' , '007' , '西鄉鎮') ;
insert into tb values('009' , '007' , '龍華鎮');
insert into tb values('010' , '007' , '鬆崗鎮');
假如我們要查詢id為003的資料的所有子節點我們可以使用cte 遞迴查詢完成...
with cte as
(select a.id,a.name,a.pid from tb a where id='003'
union all
select k.id,k.name,k.pid from tb k inner join cte c on c.id = k.pid
)select * from cte
查詢結果如下:
003 深圳市 001
005 羅湖區 003
006 福田區 003
007 寶安區 003
008 西鄉鎮 007
009 龍華鎮 007
010 鬆崗鎮 007
14樓:匿名使用者
還是建議你先設計個表吧
if object_id('[tb]') is not nulldrop table [tb]
gocreate table [tb] ([id] [int],[pid] [int],[name] [nvarchar](10))
insert into [tb]
select '1','0','a' union allselect '2','1','d' union allselect '3','1','e' union allselect '4','2','g'
--select * from [tb]
-->sql查詢如下:
select id, name, pname = (select name
from tb
where id = t.pid
) from tb t
select a.id,a.name,b.name pnamefrom tb a
left join tb b
on a.pid=b.id
怎麼用一句select來查詢出來無限級別的樹形選單
15樓:欣西汛邦懈
select 列名 from 表名 where 父節點id = 你的值
如何用sql語句查詢樹形選單包含的所有資料
SQL2019如何建立樹形的表,SQL2005如何建立樹形的表
建一個表就行了 表裡要有一個主鍵id 然後還要有一個父級id列 哪果父級列為0那麼它就是最外層的節點,如果不是,去找相應的父級。例如id parentid nodename1 0 a 2 0 b 3 1 a1 4 1 a2 5 2 b1 6 2 b2 7 3 a118 3 a129 6 b21 明白...
sql考勤統計查詢,sql 考勤統計查詢
select name,dept,count 工作天數,sum xbsj sbsj 工作累計時間,count case when k k 1 then 1 end 遲到天數,count case when k k 2 then 1 end 早退內天容數 from table1 join table2...
sql求總數,SQL 查詢總數
select count from table select count a from b select count 欄位名 from 表名 select count id from a 這條sql絕對可以,而且效率也高,sql 查詢總數 select t.isnull u.usernumber,0...