sql樹形查詢分級,SQL樹形層級查詢?

2022-06-01 19:57:04 字數 4980 閱讀 3417

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...