例如在程式中進行以下的作業:
while(true) { //SELECT ID, Parent, Name FROM Table1 WHERE Parent=@ID }透過迴圈, 一次次地到資料庫查詢這個 Node 相關的 Parent/Child 資料.
現在有一種 SQL 的做法,可一次查詢出與該 ID 相關的資料.
例如: (此例是向上搜尋)
--WITH Table1Tree-->Table1Tree是具有ID,Parent,Name這三個欄位的一個暫時使用的表格 WITH Table1Tree (ID,Parent,Name) AS ( --查詢該Node的資料 SELECT ID,Parent,Name FROM Table1 WHERE ID=100 UNION All --將主表格與WITH的表格做Join, 並以Parent與ID做為Join的Key SELECT a.ID,a.Parent,a.Name FROM Table1 a INNER JOIN Table1Tree b on b.Parent=a.ID ) --從WITH的表格中查詢出與該ID相關的Parent資料 SELECT ID,Parent,Name FROM Table1Tree詳細的 WITH 使用,可參考 http://technet.microsoft.com/zh-tw/library/ms175972.aspx
沒有留言:
張貼留言