當前位置:首頁 » 編程語言 » sql語句樹

sql語句樹

發布時間: 2022-07-14 20:17:18

① 在Mysql下,怎麼用SQL語句遍歷一個樹結構

f exists (select * from dbo.sysobjects where id = object_id(N'[tb]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [tb]
GO

--示例數據
create table [tb]([id] int identity(1,1),[pid] int,name varchar(20))
insert [tb] select 0,'中國'
union all select 0,'美國'
union all select 0,'加拿大'
union all select 1,'北京'
union all select 1,'上海'
union all select 1,'江蘇'
union all select 6,'蘇州'
union all select 7,'常熟'
union all select 6,'南京'
union all select 6,'無錫'
union all select 2,'紐約'
union all select 2,'舊金山'
go

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_id]') and xtype in (N'FN', N'IF', N'TF'))

drop function [dbo].[f_id]
GO

/*--樹形數據處理

級別及排序欄位

--鄒建 2003-12(引用請保留此信息)--*/

/*--調用示例

--調用函數實現分級顯示

select replicate('-',b.[level]*4)+a.name

from [tb] a,f_id()b

where a.[id]=b.[id]

order by b.sid
--*/
create function f_id()
returns @re table([id] int,[level] int,sid varchar(8000))
as
begin

declare @l int

set @l=0

insert @re select [id],@l,right(10000+[id],4)

from [tb] where [pid]=0

while @@rowcount>0

begin

set @l=@l+1

insert @re select a.[id],@l,b.sid+right(10000+a.[id],4)

from [tb] a,@re b

where a.[pid]=b.[id] and b.[level]=@l-1

end

return
end
go

--調用函數實現分級顯示
select replicate('-',b.[level]*4)+a.name
from [tb] a,f_id()b
where a.[id]=b.[id]
order by b.sid
go

--刪除測試
drop table [tb]
drop function f_id
go

/*--結果
中國
----北京
----上海
----江蘇
--------蘇州
------------常熟
--------南京
--------無錫
美國
----紐約
----舊金山
加拿大

--*/

② 如何用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怎麼實現樹查詢

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語句可以實現類似遍歷二叉樹查詢嗎

1.先找到 存儲 外鍵約束或者所有約束信息的表或者數據字典 假設為user_re表
2.然後再DESC 查看他有那些欄位
3.再找裡面相應的欄位
a.約束所在表(假設欄位為fk_table)
b.外鍵的話應該有
c.表的欄位(fk_col)參照表(ref_table)和參照表的欄位(ref_table.col)
這些信息肯定都有了

然後按你的要求就是
select ref_table from user_re
where fk_table = 'T1' and fk_col = 'AAA' and ref_table.col = 'AAA';

那麼得到的ref_table列就是你所要找的表了!~
你自己要做的就是去查找相應的數據字典,而且可能信息存在幾個表中,那麼可能還設計到表的連接。

⑤ sql 生成樹 高手進!

改了下,試試
update t1 set parentid= t2.主鍵 from table1 t1
inner join table1 t2 on left(t1.編號,1,len(t1.編號)-CHARINDEX ('.',REVERSE(t1.編號)))=t2.編號
REVERSE是顛倒字元串函數
CHARINDEX 是查出現某個子字元串的起始位置

⑥ 關於SQL查詢樹結構數據的語句

方法1:
是否可以有代表層次的欄位,若有,直接根據層次欄位查詢;
方法2:
是否存在以下假設:
非父級的dept_uid的 不可能 在 parent_uid 中出現。
如果假設成立,在查出的所有dept_uid中去掉,所有在在 parent_uid 中出現id,
剩下的就是你要的了。

⑦ 急求設計SQL語言的語法樹

select * from 表名 for xml

以下是詳細介紹:

FOR 子句

FOR 子句用於指定 BROWSE 或 XML 選項(BROWSE 和 XML 是不相關的選項)。
語法

[ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }
[ , XMLDATA ]
[ , ELEMENTS ]
[ , BINARY BASE64 ]
}
]
參數

BROWSE

指定當查看 DB-Library 瀏覽模式游標中的數據時允許更新。如果表包含時間戳列(用 timestamp 數據類型定義的列),表有唯一索引且 FOR BROWSE 選項在 SELECT 語句的最後發送到 SQL Server,則可以在應用程序中瀏覽該表。

說明 在含有 FOR BROWSE 選項的 SELECT 語句中無法使用 <lock_hint> HOLDLOCK。

FOR BROWSE 選項不能出現在用 UNION 運算符聯接的 SELECT 語句中。

XML

指定查詢結果將作為 XML 文檔返回。必須指定下列 XML 模式之一:RAW、AUTO、EXPLICIT。

RAW

獲得查詢結果並將結果集內的各行轉換為 XML 元素,用一般標識符 <row /> 作為元素標記。

測試:
select top 2 圖書編號=BookNo,圖書名稱=BookName from sys_books as圖書信息 FOR XML raw

結果:
<row 圖書編號="B001" 圖書名稱="1"/><row 圖書編號="B002" 圖書名稱="體育報(上海)"/>

AUTO

以簡單的嵌套 XML 樹返回查詢結果。在 FROM 子句內,每個在 SELECT 子句中至少有一列被列出的表都表示為一個 XML 元素。SELECT 子句中列出的列映射到適當的元素特性。
測試:
select top 2 圖書編號=BookNo,圖書名稱=BookName from sys_books as 圖書信息 FOR XML auto

結果:
<圖書信息 圖書編號="B001" 圖書名稱="1"/><圖書信息 圖書編號="B002" 圖書名稱="體育報(上海)"/>

EXPLICIT

指定顯式定義所得到的 XML 樹的形狀。使用此種模式,要求以一種特定的方式編寫查詢,以便顯式指定有關期望的嵌套的附加信息。

XMLDATA

返回架構,但不將根元素添加到結果中。如果指定了 XMLDATA,它將被追加到文檔上。

ELEMENTS

指定列作為子元素返回。否則,列將映射到 XML 特性。

測試:
select top 2 圖書編號=BookNo,圖書名稱=BookName from sys_books as 圖書信息 FOR XML AUTO,ELEMENTS

結果:
<圖書信息><圖書編號>B001</圖書編號><圖書名稱>1</圖書名稱></圖書信息><圖書信息><圖書編號>B002</圖書編號><圖書名稱>體育報(上海)</圖書名稱></圖書信息>

NARY BASE64

指定查詢返回二進制 base64 編碼格式的二進制數據。使用 RAW 和 EXPLICIT 模式檢索二進制數據時,必須指定該選項。這是 AUTO 模式中的默認值。

⑧ SQL語句實現子孫樹查詢經典實例

下面介紹的SQL語句非常經典,該SQL語句實現子孫樹查詢,該SQL語句可以直接在查詢分析器中執行,供您參考。
--生成表
create table MENU(id int,mname char(50),parent int)
--插入數據
insert into MENU
select 1,'新聞',Null union all
select 2,'房產',Null union all
select 3,'科技新聞',1 union all
select 4,'社會新聞',1 union all
select 5, 'IT新聞',3 union all
select 6, '航天新聞',3
--實現查詢新聞子孫樹
Declare @s varchar(1000)
select @s=','+cast(id as varchar(20))+'' from MENU where id=1 while @@rowCount>0
--charindex:返回字元串中指定表達式的起始位置
select @s=@s+','+cast(id as varchar) from MENU
where charindex(','+cast(id as varchar)+',',@s+',')=0

and charindex(','+cast(parent as varchar)+',',@s+',')>0
select * from MENU where charindex(','+cast(id as varchar)+',',@s+',')>0
--刪除表
drop table MENU

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

withaas(
selectpk_comp,name,pk_fathercompfromcompany
union
SELECTpk_dept,deptname,(CASEWHENpk_fathedept=0THENpk_compELSEpk_fathedeptEND)aspk_compFROMdept)
selecta.name,b.namefromaasb
innerjoinaona.pk_comp=b.pk_fathercomp

熱點內容
php安裝mbstring 發布:2024-05-17 22:09:56 瀏覽:470
單向板中配置哪些鋼筋 發布:2024-05-17 22:09:16 瀏覽:797
winftp下載 發布:2024-05-17 21:51:33 瀏覽:692
壓縮板包裝 發布:2024-05-17 21:44:59 瀏覽:264
安卓大屏怎麼安裝手機卡 發布:2024-05-17 21:39:09 瀏覽:753
xml導入sql 發布:2024-05-17 21:34:13 瀏覽:526
蘋果x怎麼清除緩存 發布:2024-05-17 21:34:00 瀏覽:786
我的世界紅石怎麼卡伺服器 發布:2024-05-17 21:03:53 瀏覽:44
吃麵包解壓神器 發布:2024-05-17 20:50:32 瀏覽:336
木料方演算法 發布:2024-05-17 20:44:18 瀏覽:763