3
項目的數量,我有以下表格:TSQL - 查詢來獲取與每個類別和子類別
Categories
=================================
CategoryID | ParentID | Text
---------------------------------
1 NULL Text
2 1 Text
3 NULL Text
4 1 Text
Items
=================================
ItemID | CategoryID | Text
---------------------------------
1 1 Text
2 2 Text
3 4 Text
4 3 Text
請記住,這不是一個n級層次,類別只有2級,所以例如,沒有類別可以具有2的parentID。
我在尋找的是一種返回類別的方法,使用一個額外的列來顯示類別擁有的項目數量(包括其子類別)。
即我正在尋找一個單一查詢(或程序),它可以返回類似如下:
Categories
============================================
CategoryID | ParentID | Text | Count
--------------------------------------------
1 NULL Text 3
2 1 Text 1
3 NULL Text 1
4 1 Text 1
我目前得到關聯到一個類別項目的方法如下(給定的categoryID ,@CategoryID):
SELECT * FROM Items
WHERE CategoryID
IN (SELECT CategoryID FROM Categories where ParentID = @CategoryID or CategoryID = @CategoryID)
我的問題是,我似乎無法將其鏈接到類別本身的選擇查詢。 這可能非常簡單,但我已經嘗試過使用CTE的各種分組,但是分類的層次性似乎讓我的邏輯關閉。
感謝您的幫助!
編輯:查詢還需要考慮到沒有關聯到他們的項目類別
感謝您的迴應! - 首先,我如何解釋變量的使用? (我會使用c.CategoryID) - 那麼這個查詢似乎只產生一個計數只有一個類別節點(它不考慮兒童),即在這個例子中,計數產生類別1將是1. 此外,沒有任何項目與他們聯繫似乎沒有考慮類別連接?我會更新我的問題:) – Jaime
@Jaime:澄清你的問題:)我已經刪除了變量。您可以在沒有任何項目的情況下加入「左連接」。 – Andomar
謝謝! :)雖然現在看起來有一種奇怪的效果 - 它將所有類別的計數任意分配爲1,因此例如,具有1個分項的分類(無子分類)的計數爲1,但具有0項還有1的計數?也許在類似的筆記 - 類別1的計數似乎顯示爲4而不是3,我會嘗試並找出它,但它不會顯示爲其他人的答案,所以這個評論應該澄清的東西:) – Jaime