我试图在加入表后计算列中的结果数,但我很难让查询正常工作。
在最终结果中,我需要获取一个包含产品 ID、产品名称和每个产品的媒体数量的表格。
这是我到目前为止所拥有的:
SQL
select
p.id,
p.name,
count(distinct mp.media_id)
from products as p
left join medias_products as mp
on mp.product_id = p.id
group by mp.media_id
order by p.id
这些是表格:
媒体
Id | client id
------ | ---------
1 | 1
2 | 2
产品
id | name | client_id
------ | -------- | ---------
1 | product1 | 1
2 | product2 | 2
medias_products
product_id | media_id
---------- | --------
1 | 2
2 | 1
客户端
id | name
------ | -----
1 | Peter
2 | John
此外,我想找到另一个查询,它可以为我提供按特定客户端 ID 过滤的结果。
有人可以阐明并分享知识吗?
提前致谢。
最佳答案
试试这个:
select
p.id,
min(p.name) as name,
count(distinct mp.media_id) as medias
from products as p
left join medias_products as mp
on mp.product_id = p.id
group by p.id
order by p.id
对于您的第二个查询:
select
p.id,
min(p.name) as name,
count(distinct mp.media_id) as medias
from products as p
inner join medias_products as mp
on mp.product_id = p.id
inner join medias as m
on m.id = mp.media_id
inner join clients as c
on c.id = m.client_id
where c.id = <your client's id>
group by p.id
order by p.id
关于mysql - SQL - 连接多个表并 count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174691/