国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:60日期:2023-11-04 19:19:02
遞歸查詢對于同一個表父子關系的計算提供了很大的方便,這個示例使用了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 數據庫
主站蜘蛛池模板: 一区二区中文字幕在线观看 | 免费人成黄页在线观看视频国产 | 欧美亚洲一区二区三区四 | 曰本黄页 | 日韩欧美国产高清在线观看 | 日韩毛片高清免费 | 视频一区精品 | 色视频网站大全免费 | 久久精品二三区 | 国产精品夜色视频一区二区 | 国产女王s调视频vk 国产女王vk | 酒色成人 | 高清免费国产在线观看 | 毛片免费观看视频 | 久草视频在线免费看 | 久久全国免费久久青青小草 | 久久精品国产只有精品6 | 毛片中文字幕 | 成人男女网18免费91 | 久草影视在线观看 | 在线一区二区观看 | 色九九视频 | 久久国产一区二区三区 | 波多野结衣3女同在线观看 波多野结衣aⅴ在线 | 国产精品久久久久久网站 | 国产做a爰片久久毛片a | 国产精品一区二区丝瓜 | 亚洲国产欧美日韩 | 国产黄色免费网站 | 成人18网站 | 日韩色视频一区二区三区亚洲 | 亚在线| 国产日韩欧美swag在线观看 | 九九亚洲 | 欧美成人综合 | 久草高清视频 | 久草国产在线播放 | 久久综合亚洲一区二区三区 | 亚洲黄色免费观看 | 国产手机精品视频 | 久久99久久精品久久久久久 |