亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

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

講解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 數據庫
主站蜘蛛池模板: 色情毛片| 欧美三级在线看 | 日韩美女强理论片 | 91精品久久久 | 一级床上爽高清播放 | 欧美一区二区精品 | xh98hx国产免费 | 精品毛片 | 一色屋成人免费精品网站 | 亚洲区一区| 欠草视频 | 欧美日韩综合高清一区二区 | a级国产精品片在线观看 | 久久精品福利视频 | 欧日韩美香蕉在线观看 | 亚洲免费色视频 | 久久狠狠一本精品综合网 | 久久久免费视频播放 | 国产成人综合怡春院精品 | www.午夜| 日韩在线播放视频 | 成人免费国产欧美日韩你懂的 | 9久9久女女热精品视频免费观看 | 日本免费网站视频www区 | 国产日韩久久久精品影院首页 | 欧美老熟妇bbbb毛片 | 中文精品久久久久国产网址 | 五月色婷婷综合开心网亚 | 亚洲欧美一区二区三区在线播放 | 国产亚洲精品久久综合影院 | 久久久婷 | 亚洲成在线| 免费欧洲毛片a级视频无风险 | 亚洲精品中文字幕在线 | 欧美三级成人观看 | 最新亚洲精品 | 自拍视频网 | 中文字幕一区日韩在线视频 | aaa毛片免费观看 | 极品丝袜高跟91白沙发在线 | 国产一级特黄aa级特黄裸毛片 |