當前位置:首頁 » 編程語言 » sql查詢樹形

sql查詢樹形

發布時間: 2022-10-22 22:30:23

① 如何用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

② mysql 查詢樹形介面sql

mysql啊,這個還真不知道可不可以。不過oracle可以,遞歸查詢上上級,或者查詢到下下級都可以。代碼參考:
查詢出員工號為7788的所有上級。
select * from scott.emp start with empno=7788 connect by prior mgr= empno;

mysql裡面如果sql不能實現,那就用程序裡面的list啊,查詢一個添加一個,循環(while)直到它的上級id為空為止。

事實上更建議用程序的方法,程序寫代碼更靈活,而sql不必寫的太復雜。

③ 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

④ SQL樹形層級查詢

你好的!
oracle 的start with connect by
別的資料庫用cte 遞歸都能達到你要的效果!
望採納~

⑤ sql樹形查詢分級

必須設置好表的parentID,ID第一級設置為0
witht1as(
selecttreelevel=1,parentID,ID,cast(1asvarchar(20))ROWNUMfrom表whereID=0
unionall
selecttreelevel=treelevel+1,t2.parentID,t2.ID,cast(t1.ROWNUM+'.'+cast(row_number()over(orderbyt2.itemid)asvarchar(10))asvarchar(20))ROWNUMfrom表t2joint1ont2.parentID=t1.id

)

select*fromt1orderbyROWNUM

⑥ 如何用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是過濾條件,用於對返回的所有記錄進行過濾。

⑦ 怎麼一句sql查詢出樹狀結果

SQL code
就是類似這個撒
--測試數據
DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
INSERT @t SELECT '001',NULL ,'山東省'
UNION ALL SELECT '002','001','煙台市'
UNION ALL SELECT '004','002','招遠市'
UNION ALL SELECT '003','001','青島市'
UNION ALL SELECT '005',NULL ,'四會市'
UNION ALL SELECT '006','005','清遠市'
UNION ALL SELECT '007','006','小分市'
--深度排序顯示處理
--生成每個節點的編碼累計(相同當單編號法的編碼)
DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
DECLARE @Level int
SET @Level=0
INSERT @t_Level SELECT ID,@Level,ID
FROM @t
WHERE PID IS NULL
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID
FROM @t a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
--顯示結果
SELECT SPACE(b.Level*2)+'|--'+a.Name
FROM @t a,@t_Level b
WHERE a.ID=b.ID
ORDER BY b.Sort
/*--結果
|--山東省
|--煙台市
|--招遠市
|--青島市
|--四會市
|--清遠市
|--小分市
--*/

⑧ 如何用SQL語句查詢樹形菜單包含的所有數據

Sql Server 2000因為你這里說了只有三級分類,所以我就不寫Sql函數了,得到華北下面所有子類別的ClassID(不包括華北的ClassID)select ClassID from Newclass where classParentID in (select ClassID from Newclass where classParentID=51)

⑨ sql怎麼實現樹查詢

CREATE TABLE T (CID VARCHAR(5),PID VARCHAR(5),CNAME VARCHAR(20))
GO
INSERT INTO T VALUES ('1','0','董事長')
INSERT INTO T VALUES ('2','1','CEO')
INSERT INTO T VALUES ('3','2','銷售經理')
INSERT INTO T VALUES ('4','2','IT經理')
INSERT INTO T VALUES ('5','2','運營經理')
INSERT INTO T VALUES ('6','3','銷售主管')
INSERT INTO T VALUES ('7','4','IT主管')
INSERT INTO T VALUES ('8','5','運營主管 ')
INSERT INTO T VALUES ('9','6','業務員')
INSERT INTO T VALUES ('10','7','程序員')
INSERT INTO T VALUES ('11','8','運營員')
GO

CREATE FUNCTION F(@CID INT)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @R VARCHAR(50)
SELECT @R=PID+'.'+CID FROM T WHERE CID=@CID
WHILE EXISTS(SELECT 1 FROM T WHERE CID=(SELECT PID FROM T WHERE CID=@CID))
BEGIN
SELECT @CID=PID FROM T WHERE CID=@CID
SELECT @R=PID+'.'+@R FROM T WHERE CID=@CID
END
RETURN @R
END
GO

SELECT * FROM T WHERE DBO.F(CID) LIKE '%.2.%'
GO
DROP TABLE T
DROP FUNCTION F

提供個大概的思路,具體你還可以優化,把 LIKE裡面的2換成其他CID既可查詢對應的下屬信息

⑩ 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

熱點內容
冰箱壓縮機冰堵 發布:2024-12-28 23:34:32 瀏覽:705
java版的微信 發布:2024-12-28 23:19:20 瀏覽:453
安卓手機怎麼恢復原來的圖像 發布:2024-12-28 22:55:42 瀏覽:765
安卓怎麼下載蘋果的游戲 發布:2024-12-28 22:48:23 瀏覽:664
java的excel導入導出 發布:2024-12-28 22:41:55 瀏覽:688
吃雞和王者哪個更吃手機配置 發布:2024-12-28 22:41:45 瀏覽:316
緩存軟體有哪些 發布:2024-12-28 22:40:55 瀏覽:208
android聊天功能 發布:2024-12-28 22:39:53 瀏覽:672
私人存儲空間 發布:2024-12-28 22:28:53 瀏覽:616
可讀可寫下電自動清除的存儲器 發布:2024-12-28 22:28:03 瀏覽:645