我有一个产品表,一个标签表和一个将它们链接在一起的表, ProductTags 。
产品
ID
ProductTags
ProductID
TagID
代码
ID
我想在ProductTags
表中查询同时包含ProductIDs
1和2的所有TagID
。
SELECT *
From ProductTags
Where TagID = 1
AND TagID = 2
这显然不会起作用......不能完全理解如何做到这一点!
非常感谢任何帮助!
答案 0 :(得分:1)
这是" set-within-sets"查询,我想使用group by
和having
来解决这些问题。这是一种方法:
SELECT ProductId
FROM ProductTags
WHERE TagID IN (1, 2)
GROUP BY ProductId
HAVING COUNT(DISTINCT TagId) = 2;
答案 1 :(得分:0)
你需要使用group by和for this case
select
p.id
from product p
join producttags pt on pt.ProductID = p.id
join tags t on t.id = pt.tagid
where pt.tagid in (1,2)
group by p.id
having count(*) = 2
答案 2 :(得分:0)
尝试两次加入ProductTags
表。
SELECT t3 From ProductTags t1 join ProductTags t2 on t1.productId=t2.productId join Product t3 Where t1.TagID = 1 AND t2.TagID = 2
答案 3 :(得分:0)
试试这个:
SELECT * From ProductTags
Where TagID = 1 OR TagID = 2