當前位置:首頁 » 編程語言 » sql樹狀結構
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql樹狀結構

發布時間: 2022-06-11 03:54:23

sql里樹狀結構的表,找樹葉節點。

找樹葉簡單啊

SELECT
*
FROM
表 main
WHERE
NOT EXISTS (
SELECT * FROM 表 sub WHERE main.ID = sub.ParentID
)

也就是對於 表的 每一行, 不存在有其他行的數據, ParentID 等於 當前行的 ID

❷ SQL重組樹狀結構

k1 k2 v2 k1 k2 v2
k2 k3 v3 k2 k3 v3
k3 k4 v4 k1 k3 v3
k2 k5 v5 k3 k4 v4
k2 k4 v4
k1 k4 v4
k2 k5 v5
先補全然後刪選
():select f_k from tree where filter = Y
select f_k, s_k, s_v, filter from tree2
where f_k not in () and s_k not in ()

❸ SQL Server 2000 樹狀結構

展bom表的話,一般寫procere,用遞歸調用自己查找下階,直到最後階

----
這個。。。。比較復雜,我只寫過類似展bom的proceudre,oracle的
但是不知道怎麼說。。。。。
要用到遞歸,游標
而且bom層數多的話跑起來速度很慢,不小心還會死循環。。。。

簡單來說,就是procere一次展一層,比如把需展的成品A展到半成品B,C
然後把半成品B,C當做成品,重復調用自己展下一層DEF。。。直到到底為止(也可以自己設定展到幾層就停)

❹ SQL 查詢問題.樹狀結構數據.逆向查詢.

有很多種寫法的,拿出包含1得,然後判斷是否存在2
SELECT DISTINCT A
FROM TAB t1
WHERE B = '1' AND EXISTS (SELECT 1 FROM TAB WHERE A = t1.A and B = '2')

2)拿出1得,2得各自紀錄,然後連接
SELECT t1.A
FROM (SELECT DISTINCT A FROM TAB WHERE B = '1') t1,
(SELECT DISTINCT A FROM TAB WHERE B = '2') t2
WHERE t1.A = t2.A

3)拿出1, 2 然後數個數
SELECT A
FROM TAB
WHERE B IN ('1', '2')
GROUP BY A
HAVING COUNT(DISTINCT B) >= 2

❺ sql資料庫是通過創建還是查詢實現樹狀結構

直接給你例子吧,,,適用於SQL2005及以上版本
CreatetableStorage_Depository
(
DIDvarchar(50)notnullprimarykey,
DNamevarchar(50)notnull,
PIDvarchar(50)null
)
insertintoStorage_Depository(DID,DName,PID)
select'A','A倉庫',null
unionall
select'A-1','A-1倉庫','A'
unionall
select'A-2','A-2倉庫','A'
unionall
select'A-1-1','A-1-1倉庫','A-1'
unionall
select'B','B倉庫',null

SELECT*FROMStorage_Depository
--查出A倉下面的所有子倉
withw_Storage_Depositoryas
(
selectDID,DName,PIDfromStorage_DepositorywhereDID='A'
unionall
selectA.DID,A.DName,A.PIDfromStorage_DepositoryA,w_Storage_DepositoryBwhereA.PID=B.DID
)
select*fromw_Storage_Depository

--要查出A-1-1倉的所有上級倉

withw_Storage_Depositoryas
(
selectDID,DName,PIDfromStorage_DepositorywhereDID='A-1-1'
unionall
selectA.DID,A.DName,A.PIDfromStorage_DepositoryA,
w_Storage_DepositoryBwhereA.DID=B.PID
)
select*fromw_Storage_Depository

❻ 建立一個樹形結構的SQL表 3實現的功能

主要是要有ID,PID兩個欄位,下面是我用的一個表,僅供參考:
CREATE TABLE [dbo].[Sys_Menu](
[ID] [int] NOT NULL,
[Code] [varchar](50) NOT NULL,
[PID] [int] NOT NULL,
[Name] [nvarchar](50) NULL,
[Url] [varchar](100) NULL,
[STATE] [bit] NOT NULL,
[IsSelected] [bit] NULL
) ON [PRIMARY]

GO

❼ sql server怎麼對樹形結構表的節點進行拼接

DECLARE @temp nvarchar(MAX)='',@pid bigint=3;
WHILE @pid<>0 BEGIN IF @temp=''
SELECT @temp=TypeName,@pid=ParentId
FROM [dbo].[Test]
WHERE Id=@pid;
ELSE
SELECT @temp=(TypeName+'->'+@temp),@pid=ParentId
FROM [dbo].[Test]
WHERE Id=@pid;
END;
SELECT @temp AS TypeName;

❽ 如何用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里樹形結構分組排序

createtableT1(thisvarchar(10),parentvarchar(10))
insertintoT1(this,parent)
values('id1',null)
,('id2',null)
,('id3','id1')
,('id4','id2')
,('id5','id3')
,('id6','id3')
,('id7','id4')
,('id8','id7')

--sqlserver的cte功能
withtree(this,parent,root,depth)as(
selectthis,parent,thisasroot,
unionall
selecta.this,a.parent,b.root,b.depth+1asdepthfromT1a,treebwherea.parent=b.this
)
selectthis,parent,root,depth
fromtree
orderbyroot,depth,this

❿ 求一條sql語句,樹形結構

最後SQL語句返回的結果是什麼?看一下以下語句行不行?

WITHAAS(SELECTpk_compID,Name,pk_fathercompPIDFROMcompany
UNIONALL
SELECTpk_dept,DeptName,pk_compFROMdept),
BAS
(SELECTCAST(NameASVARCHAR(200))Name,PID,IDFROMAWHEREPID=0
UNIONALL
SELECTCAST(B.Name+''+A.NameASVARCHAR(200)),A.PID,A.ID
FROMBJOINAONB.ID=A.PID)
SELECTNameFROMB