『壹』 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
『叄』 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 查詢 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,
希望對你有所幫助!
『伍』 如何用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是過濾條件,用於對返回的所有記錄進行過濾。
