我有單獨的「類」和「組」組,其中每個組都有一個或多個標籤。我想爲每個組找出包含每個組相同(或更多)標籤的類的子集。SQL查詢集與普通成員(關係部門)
某些樣本數據:
declare @Groups table
(
GroupID int,
TagID int
)
insert @Groups
values (1,1),(1,2),(1,3),
(2,1),(2,2),
(3,1),(3,2),(3,3),(3,4)
declare @Classes table
(
ClassID int,
TagID int
)
insert @Classes
values (1,1),(1,2),
(2,1),(2,2),
(3,1),(3,2),(3,3)
select * from @Groups
select * from @Classes
和輸出:
GroupID TagID
1 1
1 2
1 3
2 1
2 2
3 1
3 2
3 3
3 4
ClassID TagID
1 1
1 2
2 1
2 2
3 1
3 2
3 3
一個例子的結果集是這樣的:
declare @Results table
(
GroupID int,
ClassID int
)
insert @Results
values (1,3),(2,1),(2,2),(2,3),(3,null)
select * from @Results
結果輸出:
GroupID ClassID
1 3
2 1
2 2
2 3
3 NULL
我知道這是一個關係分類型問題,涉及having
和count
。這些職位描述一下我想做的事,但我無法弄清楚如何將示例適用於上述的特殊情況:
- http://weblogs.sqlteam.com/peterl/archive/2010/07/02/Proper-Relational-Division-With-Sets.aspx
- SQL Join only if all records have a match
- How can I structure a query to give me only the rows that match ALL values in a CSV list of IDs in T-SQL
- SQL: select sets containing exactly given members
- An sql query to find users with common tags in a defined set
歡迎來到SO!和+1來獲得雙重否定方法。我會嘗試在生產環境中避免這種情況,因爲除非您熟悉它,否則會非常困惑。 – Andomar 2013-05-01 10:13:39
謝謝,標記爲空組正確返回null的答案。 – Tamar 2013-05-01 10:37:19