我有两个表,我正在使用一个依赖另一个。我想获取独立表的信息,并计算从属表使用每行数据的次数。使用我当前的查询,当我知道实际上有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
答案 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上,这将返回正确的计数。