我有3张 table 。我想按 item.name 分组并计算它可以在 idetail 中找到的次数。此查询仅计算所有行,而不是按行分组。
有谁知道如何修复它?
SELECT i.name, COUNT(i.name)
FROM item AS i
INNER JOIN item_category AS ic ON i.i_category_id = ic.ic_id
INNER JOIN idetail AS id ON ic.ic_id = id.id_category_id
WHERE ic.ic_id = 1002
GROUP BY i.name
最佳答案
这就是你想要的:
select x.name
, count(*) as cntNames
, sum(x.cntDetails) as cntDetails
from (
SELECT i.name, COUNT(*) as cntDetails
FROM item AS i
INNER JOIN item_category AS ic ON i.i_category_id = ic.ic_id
INNER JOIN idetail AS id ON ic.ic_id = id.id_category_id
WHERE ic.ic_id = 1002
-- NOTICE THE 2nd Value in the group by!
GROUP BY i.name,id.id_category_id
) x
group by name
关于SQL Server Count on a grouped by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700155/