我試圖通過將兩個表連接在一起創建視圖並不困難。但是有一個但是。在JOIN操作的SELECT過程中替換子記錄列
我基本上有兩張表。其中一個存儲項目和標籤之間的關聯,其他商店標籤以父母 - 子女形式存在(8個父母,每個4-6個孩子)。
請允許我說明開始與我的項目關聯表:
AssociationId | ItemId | TagId
------------------------------
1 | 2 | 1
2 | 10 | 2
3 | 3 | 1
4 | 5 | 7
...
我的標籤表:
TagId | ParentId | Name
------------------------------
1 | NULL | abc sds
2 | 1 | sjdksd as
3 | 1 | djfsd dfs d
4 | NULL | ujkjsd as
...
正如你可以看到每個家長可以通過與ParentId IS NULL
裝飾查詢中找到。
SELECT ITA.AssociationId, ITA.ItemId, ITA.TagId, T.Name as TagName
FROM Item_Tag_Association AS ITA
INNER JOIN Tags AS T
ON T.TagId = ITA.TagId
WHERE T.ParentId IS NULL
如果我是加入兩個表上TagId
與ParentId IS NULL
我會找到父標籤的所有項目。
如果我要加入TagId
與ParentId IS NOT NULL
這兩個表,我會找到所有帶有子標籤的項目。
但我真正想要的是一個項目和標籤的列表,其中的子標籤被替換爲他們的父標籤。
使用例如上面的結果會是這個樣子:
AssociationId | ItemId | TagId | TagName
----------------------------------------
1 | 2 | 1 | abc sds
2 | 10 | 1 | abc sds
3 | 3 | 1 | abc sds
4 | 5 | 7 | ysdasjdhas
...
至於爲什麼我想這樣做的原因是爲了讓我能得到的計數多少次特定父標籤(或該父母的孩子)已與某件物品相關聯。正如你現在所猜測的,每個孩子都應該爲其父母做出貢獻。
SELECT DISTINCT ItemId, TagId, TagName, COUNT(ItemId) OVER (PARTITION BY TagId) AS Count
FROM vw_My_View
ORDER BY Count DESC
我正在使用SQL Server 2008 R2。所有建設性意見都是值得歡迎的
@Tanner按我的問題最後一個表格說明了什麼期望的結果會是什麼樣子。 – iiminov
好的,我認爲這是計數部分之前的中間步驟。 – Tanner