如何进行复杂的查询

时间:2019-11-12 11:30:24

标签: mysql sql

我有商店表,产品表和商店-产品表,显示它们之间的关系。

*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

2 个答案:

答案 0 :(得分:3)

您可以使用group byhaving

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