av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

講解SQL Server 2005數(shù)據(jù)庫表的遞歸查詢

瀏覽:2日期:2023-11-04 19:53:23
在SQL Server 2005數(shù)據(jù)庫中,遞歸查詢對(duì)于同一個(gè)表父子關(guān)系的計(jì)算提供了很大的方便,下文中的示例使用了SQL server 2005中的遞歸查詢,使用的表是CarParts,這個(gè)表存儲(chǔ)了一輛汽車的所有零件以及結(jié)構(gòu),part是零件單位,subpart是子零件,Qty是數(shù)量。

示例如下:

*/

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

/*

一輛汽車需要各個(gè)零件的數(shù)目

1個(gè)Body 需要4個(gè)Door

1個(gè)Door 需要1個(gè)Mirror

那么

1個(gè)body需要4個(gè)Mirror

結(jié)構(gòu)很簡單吧

*/

WITH CarPartsCTE(SubPart, Qty)

AS

(

-- 固定成員 (AM):

-- SELECT查詢無需參考CarPartsCTE

-- 遞歸從此處開始

SELECT SubPart, Qty

FROM CarParts

WHERE Part = 'Body'

UNION ALL

-- 遞歸成員 (RM):

-- SELECT查詢參考CarPartsCTE

-- 使用現(xiàn)有數(shù)據(jù)往下一層展開

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 位于 表最后的位置,

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

*/

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)

示例:

以下示例顯示經(jīng)理以及向經(jīng)理報(bào)告的雇員的層次列表。

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

標(biāo)簽: Sql Server 數(shù)據(jù)庫
主站蜘蛛池模板: 欧美色欧美亚洲另类七区 | 色桃网| 亚洲视频一区在线 | 6080yy精品一区二区三区 | 成人亚洲精品久久久久软件 | 视频一区二区三区中文字幕 | 日韩一区二区三区在线视频 | 91大片| 国产一区二区在线视频 | 欧洲一区视频 | 精品少妇v888av | 99久久精品国产毛片 | 99久久免费精品国产男女高不卡 | a黄视频 | 久久国产99| 欧美精品久久久久 | 操久久 | 二区不卡 | 久久精品一区二区视频 | 亚洲激情第一页 | 欧美日韩一区在线 | 亚洲欧美精品 | 伊人电影院av | 精品久久香蕉国产线看观看亚洲 | 精品国产乱码久久久久久久久 | 精品三级在线观看 | 国产成人精品久久二区二区91 | 国产在线中文字幕 | 亚洲一区二区三区四区五区中文 | 永久www成人看片 | 久久精彩视频 | 久久国产一区二区 | 欧美日韩高清免费 | 91麻豆精品国产91久久久久久 | 日本一区二区高清视频 | 久久久久午夜 | 欧美日韩精品一区二区天天拍 | 国产一级片一区二区三区 | 亚洲日本欧美日韩高观看 | 91国自视频| 国产精品18久久久 |