我有商店表,产品表和商店-产品表,显示它们之间的关系。
*store table*
store_id name ...
1 store1
2 store2
3 store3
*product table*
product_id name ...
1 product1
2 product2
3 product3
*store-product table*
id store_id product_id
1 1 1
2 1 2
3 2 3
4 3 1
5 3 2
6 3 3
一旦给出产品,我想得到销售这些产品的商店。
即:如果给定的产品为1
,则应该提取存储区1, 3
。
如果给定的产品是1, 2, 3
,则仅应提取商店3
。
答案 0 :(得分:3)
您可以使用group by
和having
:
select sp.store_id
from store_product sp
where sp.product_id in (1, 2, 3) -- list of products
group by sp.store_id
having count(*) = 3; -- number of elements in list
答案 1 :(得分:0)
缩短表名,但是这样吗?
select store.name from pt
join spt on spt.product_id = pt.id
join st on spt.store_id = st.id
where st.product_id = 1