执行连接和计数的正确mysql查询是什么?

时间:2011-09-05 11:21:56

标签: php mysql

我有两个表,一个包含有关图像的信息,另一个包含有关图像的注释信息。

我需要一个查询,在一个查询中显示针对图像的注释计数。我尝试过以下方法:

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;

但这并没有正确报告,因为它只计算所有评论表。

任何人都可以帮忙:)

3 个答案:

答案 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;