查询中的SQL计数查询

时间:2011-02-19 19:15:03

标签: sql group-by

我有两个表,我正在使用一个依赖另一个。我想获取独立表的信息,并计算从属表使用每行数据的次数。使用我当前的查询,当我知道实际上有38条记录时,我只得到1的记录数。我做错了什么?

SELECT r.rid, r.name, COUNT(b.bid) AS brewtot 
FROM recipes r, brews b
WHERE r.uid = '#cookie.id#' AND b.rid = r.rid

5 个答案:

答案 0 :(得分:2)

我怀疑你想要做的是添加一个

GROUP BY b.rid

假设您的问题是“每种配方有多少啤酒。”

此外,您可能希望使用LEFT JOIN在没有酿造配方时计算0行:

SELECT r.rid, r.name, COUNT(b.bid) AS brewtot 
FROM recipes r LEFT JOIN brews b
ON b.rid = r.rid
WHERE r.uid = '#cookie.id#'
GROUP BY b.rid

答案 1 :(得分:1)

select r.rid, r.name, count(b.bid) as brewtot
from recipes r inner join brews b on r.rid = b.rid 
where r.uid = '#cookie.id#' group by r.rid, r.name

那应该有用

答案 2 :(得分:0)

在查询结尾添加“GROUP BY r.rid”。

答案 3 :(得分:0)

你必须在摆脱分组。

SELECT r.rid, r.name, COUNT(b.bid) AS brewtot 
FROM recipes r, brews b
WHERE r.uid = '#cookie.id#' AND b.rid = r.rid 
group by r.rid

您是否也想看到所有啤酒记录?。

答案 4 :(得分:0)

我很惊讶查询甚至可以在没有分组的情况下工作?尝试:

SELECT  r.rid
,       r.name
,       COUNT(b.bid) AS brewtot 
FROM    recipes r
JOIN    brews b
ON      b.rid = r.rid
WHERE   r.uid = '#cookie.id#'
GROUP BY
        r.rid
,       r.name

在使用我的测试设置的SQL Server上,这将返回正确的计数。