成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

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

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

瀏覽:5日期: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 數據庫
主站蜘蛛池模板: 亚洲综合成人网 | 在线播放国产真实女同事 | 国产欧美一区二区三区精品 | 久久精品国产亚洲 | 国产在视频线精品视频www666 | 日本午色www高清视频 | 久久国产一区二区 | 午夜毛片视频高清不卡免费 | 一级片在线观看 | 美国毛片aaa在线播放 | 国产激情久久久久久影院 | 欧美日韩久久 | 国产精品一区二区综合 | 中文字幕精品一区二区精品 | a毛片基地免费全部香蕉 | 波多野结衣一区二区 | 欧美人成片免费看视频不卡 | 美女的被男人桶爽网站 | 成人亚洲精品一区 | 欧美三区在线观看 | 日韩毛片欧美一级a | 亚洲国产一区二区a毛片日本 | 亚洲线精品久久一区二区三区 | 中文字幕一区二区在线播放 | 久草精品免费 | 日韩免费视频播播 | 在线观看亚洲 | 91青青国产在线观看免费 | 亚洲综合首页 | 亚洲欧美日韩国产 | 国产精品成人观看视频网站 | 欧美一级va在线视频免费播放 | 小明日韩在线看看永久区域 | 亚洲欧美日韩在线不卡中文 | 久久久99视频 | 伊人网在线免费视频 | 人成免费网站 | 亚洲精品系列 | 日韩经典欧美精品一区 | 日韩成人免费一级毛片 | 黄a视频在线观看 |