我有两个表,一个包含有关图像的信息,另一个包含有关图像的注释信息。
我需要一个查询,在一个查询中显示针对图像的注释计数。我尝试过以下方法:
SELECT l.img_id, COUNT(c.comment_id) AS comment_count FROM tbl_images l, tbl_image_comments c WHERE l.img_id = c.img_id;
但这并没有正确报告,因为它只计算所有评论表。
任何人都可以帮忙:)
答案 0 :(得分:2)
你在这里做的是制作CROSS JOIN
图像和评论表:图像中的每一行都与所有评论中的行“配对”,反之亦然(这解释注释计数),然后使用WHERE
子句过滤生成的数据集。
LEFT OUTER JOIN
答案 1 :(得分:1)
您需要为计数指定分组才能按预期工作。
尝试添加
GROUP BY l.img_id
在查询结尾
答案 2 :(得分:0)
作为选项:
SELECT
l.img_id,
(select COUNT(*) from tbl_image_comments c l.img_id = c.img_id) AS comment_count
FROM
tbl_images l;