簡體   English   中英

按組 ID 過濾 SQL 服務器

[英]Filter with SQL Server by Group ID

我有兩個表,我需要按過濾器 id 過濾數據,這取決於與過濾器組 id 的關系。

例如我有這兩個表:

表格1:

物品編號 過濾器ID
3 122
3 123
3 4
17 123

表 2:

過濾器ID 過濾組ID
122 5
123 5
4 1
  • 如果我按過濾器 id = 123 搜索,則需要返回具有此過濾器的所有項目 id。
  • 如果我搜索兩個或多個具有不同組 ID 的不同過濾器 ID,我只需要獲取具有所有過濾器 ID 和組 ID 的項目 ID。

所需的 output:

  • 第一個輸入:123 -> 返回項目 ID = 3 和項目 ID = 17
  • 第二個輸入:123,4 -> 返回項目 id = 3,因為過濾器 id 123 屬於組 id 5,過濾器 id 4 屬於組 id 1,而項目 id 3 是唯一具有這兩個過濾器的過濾器。
  • 第三個輸入:122,123 -> 返回項目 ID = 3 和項目 ID = 17,因為兩個過濾器 ID 屬於同一組。

我對這個查詢有點迷茫,我很高興能得到一些幫助。

似乎Table2與該問題沒有任何相關性。 過濾器屬於哪個組沒有區別,您只想知道哪個ItemID與您的輸入中的過濾器行匹配。

然后這變成了帶余數的關系除法問題。

如果您將輸入存儲在表變量或表值參數中,那么您可以使用正常的關系除法技術

SELECT
  t1.ItemID
FROM Table1 t1
JOIN @FilterInput fi ON  t1.FilterID = fi.FilterId
GROUP BY
  t1.ItemID
HAVING COUNT(*) = (SELECT COUNT(*) FROM @FilterInput);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM