日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > Sqlserver > SQL2005使用with關鍵字解決遞歸父子關系

SQL2005使用with關鍵字解決遞歸父子關系

來源:程序員人生   發布時間:2014-05-06 11:18:53 閱讀次數:3877次

1. 引言

現實項目中經常遇到需要處理遞歸父子關系的問題,如果把層次關系分開,放在多個表里通過主外鍵關系聯接,最明顯的問題就是擴展起來不方便,對于這種情況,一般我們會創建一個使用自連接的表來存放數據。例如存放會員地區數據表結構可能是這樣:

列名

描述

location_id

地區編號

location_name

地區名稱

parentlocation_id

上級地區編號

或者某個部分的職員表結構可能如下所示:

列名

描述

employee_id

職員編號

employee_name

職員名稱

manager_id

職員的直接上級管理者,和employee_id進行自聯接

通過類似表結構,我們就可以通過一個表理論上管理無限級數的父/子關系,但是當我們需要將這些數據讀取出來,不論是填充到一個樹中,或是使用級聯顯示出來,需要花費一定的精力。傳統的做法,是做一個遞歸調用,首先連接數據庫將頂層數據(也就是parent_xxxnull的記錄)讀取出來,再對每一條數據進行遞歸訪問填充集合,這種做法需要連接數據庫多次,顯然不是較好的解決方法,那么我們能不能通過一次數據庫訪問,將數據全部讀取出來,并且為了按照父子關系形成集合,使返回的數據滿足某種格式。

2. 分析

理想情況下,如果父/子關系數據時嚴格按照關系結構添加到數據庫中,亦即首先添加某條父記錄,接著添加該父記錄的子記錄,如果子記錄還包含子記錄的話繼續添加,最終數據表中父/子關系按規則排列數據,我們就可以使用某種算法填充集合,但是正如我們所說,這是理想情況,實際情況下數據經常會發生改變,導致數據沒有規律可言,如下圖所示,這樣的話讀取數據填充集合就不太容易的。

所以我們要做的就是通過查詢使數據庫返回的數據滿足這種格式,那么我們的思路是首先查找頂層(0層)記錄,再查詢第1層記錄,接下來是第2層、第3層直到第n層。因為層數是不確定的,所以仍然需要使用遞歸訪問。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩欧美精品一区二区 | a级片在线 | 国内精品久久久久久久97牛牛 | 在线观看毛片网站 | 欧美激情在线观看视频 | 精品国产一区二区三区麻豆小说 | 日日夜夜天天 | 疯狂做受xxxx国产 | 国产精品xxx在线观看www | 网站黄色一级片 | 91色在线视频 | 欧美一及黄色片 | 美女视频免费一区二区 | 国产日韩一区二区三区 | 男人都懂的网站 | 日韩国产一区在线 | 国产男女av | 亚洲成人99 | 在线观看中文字幕 | 99re视频在线 | 日本成人网址 | 美日韩一区二区三区 | 青青草这里只有精品 | 日韩国产精品一区二区 | 国产一区二区三区免费在线观看 | 久久久久久久亚洲视频 | 欧美激情视频一区二区三区在线播放 | 国产成人午夜精华液 | 日韩综合精品 | 看全色黄大色黄大片女图片第一次 | 国产欧美日韩在线 | 亚洲欧美片 | 午夜国产在线 | 国产日韩精品视频一区二区三区 | 成人污 | 日韩免费视频一区二区 | 国产亚洲欧美另类一区二区三区 | 逼逼av | 91精品国产99久久久久久红楼 | va视频| 久久精品视频一区二区三区 |