SQL 查询 return 从许多表中统计结果
SQL query which return counted results from many tables
我有两个表 'shops' 和 'products'。商店有很多产品,产品属于一个商店。而且产品属于唯一的一个类别。我有 3 个类别的 ID(例如 1、2、3)。我怎样才能让所有商店的产品都属于所有 3 个类别?
我试过了
SELECT distinct s.*
from shops s
left join products p on p.shop_id = s.id
where p.category_id in (1,2,3)
但是这个 returns 商店有属于类别 1 或 2 或 3 的产品但是我想要属于所有 3 个类别的产品,例如 1 AND 2 AND 3,所以每个商店都必须有至少 3 个产品
按每个店铺return使用分组
SELECT distinct s.*
from shops s
left join products p on p.shop_id = s.id
where p.category_id in (1,2,3)
group by s.id
having count(distinct p.category_id) = 3
您可以检查 s.id 有 count(distinct p.category_id) = 3
SELECT s.id
from shops s
inner join products p on p.shop_id = s.id
where p.category_id in (1,2,3)
group by s.id
having count(distinct p.category_id) = 3
SELECT s.*
from shops s
join products p
on p.shop_id = s.id
where p.category_id in (1,2,3)
Group
by s.id
Having count(distinct p.category_id) = 3
或类似的东西
试试这个?
SELECT DISTINCT A.ID FROM SHOPS A, PRODUCTS B
WHERE A.ID = B.SHOP_ID AND EXISTS (SELECT COUNT(1) FROM PRODUCTS C, PRODUCTS D, PRODUCTS E WHERE B.ID = C.ID AND C.ID = D.ID AND D.ID = E.ID AND C.CATEGORY_ID = 1 AND D.CATEGORY_ID = 2 AND E.CATEGORY_ID = 3)
我的 T-SQL 已经生锈了,这假设我得到了正确的关系,例如商店 1 - M 产品,我不确定类别是否是一个实体,但类别 1 - M 产品。此外,对于未来的工作,我发现当您的实体是名称单数名词时它会有所帮助,但这只是我的偏好。祝你好运。
我有两个表 'shops' 和 'products'。商店有很多产品,产品属于一个商店。而且产品属于唯一的一个类别。我有 3 个类别的 ID(例如 1、2、3)。我怎样才能让所有商店的产品都属于所有 3 个类别?
我试过了
SELECT distinct s.*
from shops s
left join products p on p.shop_id = s.id
where p.category_id in (1,2,3)
但是这个 returns 商店有属于类别 1 或 2 或 3 的产品但是我想要属于所有 3 个类别的产品,例如 1 AND 2 AND 3,所以每个商店都必须有至少 3 个产品
按每个店铺return使用分组
SELECT distinct s.*
from shops s
left join products p on p.shop_id = s.id
where p.category_id in (1,2,3)
group by s.id
having count(distinct p.category_id) = 3
您可以检查 s.id 有 count(distinct p.category_id) = 3
SELECT s.id
from shops s
inner join products p on p.shop_id = s.id
where p.category_id in (1,2,3)
group by s.id
having count(distinct p.category_id) = 3
SELECT s.*
from shops s
join products p
on p.shop_id = s.id
where p.category_id in (1,2,3)
Group
by s.id
Having count(distinct p.category_id) = 3
或类似的东西
试试这个?
SELECT DISTINCT A.ID FROM SHOPS A, PRODUCTS B
WHERE A.ID = B.SHOP_ID AND EXISTS (SELECT COUNT(1) FROM PRODUCTS C, PRODUCTS D, PRODUCTS E WHERE B.ID = C.ID AND C.ID = D.ID AND D.ID = E.ID AND C.CATEGORY_ID = 1 AND D.CATEGORY_ID = 2 AND E.CATEGORY_ID = 3)
我的 T-SQL 已经生锈了,这假设我得到了正确的关系,例如商店 1 - M 产品,我不确定类别是否是一个实体,但类别 1 - M 产品。此外,对于未来的工作,我发现当您的实体是名称单数名词时它会有所帮助,但这只是我的偏好。祝你好运。