亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

講解SQL Server 2005數據庫表的遞歸查詢

瀏覽:3日期:2023-11-04 19:53:23
在SQL Server 2005數據庫中,遞歸查詢對于同一個表父子關系的計算提供了很大的方便,下文中的示例使用了SQL server 2005中的遞歸查詢,使用的表是CarParts,這個表存儲了一輛汽車的所有零件以及結構,part是零件單位,subpart是子零件,Qty是數量。

示例如下:

*/

CREATE table CarParts

(

CarID INT NOT NULL,

Part VARCHAR(15),

SubPart VARCHAR(15),

Qty INT

)

GO

INSERT CarParts VALUES (1, 'Body', 'Door', 4)

INSERT CarParts VALUES (1, 'Body', 'Trunk Lid', 1)

INSERT CarParts VALUES (1, 'Body', 'Car Hood', 1)

INSERT CarParts VALUES (1, 'Door', 'Handle', 1)

INSERT CarParts VALUES (1, 'Door', 'Lock', 1)

INSERT CarParts VALUES (1, 'Door', 'Window', 1)

INSERT CarParts VALUES (1, 'Body', 'Rivets', 1000)

INSERT CarParts VALUES (1, 'Door', 'Rivets', 100)

INSERT CarParts VALUES (1, 'Door', 'Mirror', 1)

INSERT CarParts VALUES (1, 'Mirror', 'small_Mirror', 4)

GO

SELECT * FROM CarParts

GO

/*

一輛汽車需要各個零件的數目

1個Body 需要4個Door

1個Door 需要1個Mirror

那么

1個body需要4個Mirror

結構很簡單吧

*/

WITH CarPartsCTE(SubPart, Qty)

AS

(

-- 固定成員 (AM):

-- SELECT查詢無需參考CarPartsCTE

-- 遞歸從此處開始

SELECT SubPart, Qty

FROM CarParts

WHERE Part = 'Body'

UNION ALL

-- 遞歸成員 (RM):

-- SELECT查詢參考CarPartsCTE

-- 使用現有數據往下一層展開

SELECT CarParts.SubPart, CarPartsCTE.Qty * CarParts.Qty

FROM CarPartsCTE

INNER JOIN CarParts ON CarPartsCTE.SubPart = CarParts.Part

WHERE CarParts.CarID = 1

)

SELECT SubPart,Qty AS TotalNUM

FROM CarPartsCTE

/*

注意看最下層的small_Mirror 位于 表最后的位置,

由此可以看出改遞歸不是開始就進行遞歸查詢而是在1層完全展開后在根據該層展開下一層不是深度優先的遞歸

*/

drop table CarParts

--------------------------------result---------------------------------------

CarID Part SubPart Qty

----------- --------------- --------------- -----------

1 Body Door 4

1 Body Trunk Lid 1

1 Body Car Hood 1

1 Door Handle 1

1 Door Lock 1

1 Door Window 1

1 Body Rivets 1000

1 Door Rivets 100

1 Door Mirror 1

1 Mirror small_Mirror 4

(10 row(s) affected)

SubPart TotalNUM

--------------- -----------

Door 4

Trunk Lid 1

Car Hood 1

Rivets 1000

Handle 4

Lock 4

Window 4

Rivets 400

Mirror 4

small_Mirror 16

(10 row(s) affected)

示例:

以下示例顯示經理以及向經理報告的雇員的層次列表。

WITH DirectReports(groupid, member, EmployeeLevel,type) AS

(

SELECT groupid, member, 0,type AS EmployeeLevel

FROM groupinfo

WHERE groupid = 'finance_company'

UNION ALL

SELECT e.groupid, e.member, EmployeeLevel + 1,e.type

FROM groupinfo e

INNER JOIN DirectReports d

ON e.groupid = d.member

)

SELECT b.nickname,groupid, member, EmployeeLevel,type

FROM DirectReports,userbasicinfo b

where DirectReports.member=b.id

and type = 1

標簽: Sql Server 數據庫
主站蜘蛛池模板: 久久精品国产400部免费看 | 黄色成年| 可以看的毛片 | 午夜资源在线 | 黄视频网站观看 | 伊人思思| 美女扣下面流白浆丝袜 | 久久久这里只有精品加勒比 | 日韩在线免费 | 真人视频一级毛片 | 欧美v在线 | 香蕉视频色板 | 国产a一级毛片含羞草传媒 国产a三级三级三级 | julia一区福利视频在线观看 | 国产馆精品推荐在线观看 | 国产婷婷一区二区三区 | 亚洲乱人伦在线 | 国产黄拍 | 华人黄网站大全 | 中文字幕欧美成人免费 | 久久久久激情免费观看 | 嫩草视频在线 | 青青草国产97免久久费观看 | 成人免费一级片 | 性视频网站在线 | freesexvideo性欧美tv2021 | 成人三级iii | 国产影片中文字幕 | 在线观看免费黄视频 | 91pao强力打造免费高清 | 亚洲色欧美| 国产成人小视频在线观看 | 不卡国产| 婷婷激情在线视频 | 国产91在线播放中文 | 国产免费人做爰午夜视频 | 国产又黄不爽不遮挡视频 | 晚上睡不着偷偷看b站免费是视频 | 欧美黄色一级视频 | 91福利在线观看视频 | 在线 中文字幕 日韩 欧美 |