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

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

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

瀏覽:9日期:2023-11-04 19:53:23
在SQL Server 2005數(shù)據(jù)庫中,遞歸查詢對于同一個表父子關(guān)系的計算提供了很大的方便,下文中的示例使用了SQL server 2005中的遞歸查詢,使用的表是CarParts,這個表存儲了一輛汽車的所有零件以及結(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

/*

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

1個Body 需要4個Door

1個Door 需要1個Mirror

那么

1個body需要4個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 位于 表最后的位置,

由此可以看出改遞歸不是開始就進行遞歸查詢而是在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)理報告的雇員的層次列表。

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ù)庫
主站蜘蛛池模板: 久久国内精品自在自线400部o | 亚洲一级免费视频 | 日本免费毛片在线高清看 | 国产看片一区二区三区 | 国内精品伊人久久久影视 | 亚洲精品色综合色在线观看 | 在线视频一区二区三区三区不卡 | 亚洲国产精品一区二区首页 | 黄色毛片三级 | 韩国一级片视频 | 国产中文在线视频 | 欧美在线视频一区 | 97国产精品视频观看一 | 亚洲在线视频免费观看 | 日本黄大片影院一区二区 | 国产在线观看91精品一区 | 青青爽国产手机在线观看免费 | 日本三级毛片 | 成年女人免费毛片视频永久 | 欧美日韩专区国产精品 | 国产精品日韩专区 | 免费黄色网址在线播放 | 色噜噜亚洲男人的天堂 | 日韩特黄毛片 | 无遮挡一级毛片私人影院 | 欧美性久久久久 | 国内一区| 一色屋成人免费精品网站 | 亚洲社区在线 | 中文字幕一二三四区2021 | 国产波多野结衣中文在线播放 | 日本三级香港三级人妇 m | 亚洲免费毛片 | 性欧美成人依依影院 | 一级毛片欧美大片 | 亚洲精品国产拍拍拍拍拍 | 中文字幕一区2区 | 欧美一区二区视频 | 欧美一级精品高清在线观看 | 国产亚洲欧美日韩在线观看不卡 | 国产网站免费视频 |