2015-12-15 82 views
-1

CTE比自加入和子查詢有什麼優勢? 我們可以通過使用CTE實現使用自連接/子查詢。想知道除了簡單的cte語法之外,使用cte來提升這些方法的好處!?CTE通過自加入和子查詢

+0

一些具體的例子會有幫助。否則,這個問題非常廣泛。 – sstan

+0

你是指CTE自我加入的是什麼?請發表一個例子。我認爲你的意思是派生表 - 而不是子查詢 – Paparazzi

回答

1

CTE允許輕鬆創建導航父子結構的遞歸查詢。

-1

當一個查詢確實是複雜的(認爲的5-6派生表的可能性,大約20連接和有條件的地方,你知道的7個或更多 - 在企業環境中的平均報告查詢),那麼熱膨脹係數有助於更容易瞭解發生了什麼,從而使查詢更易於維護。當事情以複雜的方式一起工作時,它們也可以使得獲得實際正確結果更加簡單。

所以說,我需要的鄰接一堆符合一定條件的訂單的所有信息tecnnical的報告。由於信息將被彙總,因此最終結果應該與您剛查詢訂單表時得到的記錄數相同。所以你從一個CTE開始就可以得到你想要的訂單。你可以做一個簡單的選擇,並找到滿足條件的37個訂單。現在你知道你的最終結果應該是什麼,並且隨着你的查詢越來越複雜,你可以很容易地檢查你的問題。

所以現在我需要在每個訂單中的個別項目的總和。也許是因爲它們存儲在多個表格中(比如說服務和貨物在不同的表格中),那麼你就有一個工會,你需要得到這筆錢。所以這成爲第二個CTE。

現在,您需要爲訂單的接觸點,但有些訂單有關聯的多個人,你必須要找到通過添加一些標準的主要聯繫人。所以現在你有第三個CTE。

那麼你有兩個送貨地址,所以你需要或兩者連接在一起還是應該每一批是一個單獨的記錄?此時,通過使用多個CTE來繼續添加大塊數據會更容易,並且當您進入最終查詢時,它會相對簡單,因爲所有複雜性都在單個塊中。

那就從現在開始,當有人需要改變商業規則來確定一個信息塊一年的時間,你可以改變只是一個組成部分,有信心多了也沒有影響到其他部分如何一起工作。維護起來容易得多。

當然什麼@TabAllerman說一下遞歸。