Php 执行连接和计数的正确mysql查询是什么?
我有两个表,一个包含关于图像的信息,另一个包含关于图像注释的信息 我需要有一个查询,显示对一个查询中的图像评论计数。我尝试了以下方法:Php 执行连接和计数的正确mysql查询是什么?,php,mysql,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; 但这并不能正确地报告,因为它只计算表中的所有注释 有人能帮忙吗:)您在这里做的是对图像和注释表进行交叉连接:图像中的每一
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;
但这并不能正确地报告,因为它只计算表中的所有注释
有人能帮忙吗:)您在这里做的是对图像和注释表进行
交叉连接:图像中的每一行与注释中的所有行“配对”,反之亦然(这解释了注释计数),然后使用WHERE
子句对结果数据集进行过滤
您应该做的是一个左外连接
,它仅将图像中的每一行与满足特定条件的注释中的行“配对”:
作为选择:
SELECT
l.img_id,
(select COUNT(*) from tbl_image_comments c l.img_id = c.img_id) AS comment_count
FROM
tbl_images l;
您需要为计数指定一个分组,以使其按预期工作
尝试添加
GROUP BY l.img_id
在查询结束时确定这是我最后使用的->选择l.img_id,按l.img_id使用(img_id)组从tbl_图像中计数(c.comment_id)作为注释_计数,按l.img_id左外连接tbl_图像_注释作为c@乔恩:你忘了分组依据…
@Tony:你为什么把分组依据
放在那里?@Jon它似乎起作用了(难道我不需要它吗?:)不过我确实有另一个问题,我需要再次从另一个表中进行第二次计数,对语法有什么想法吗?@Tony:不要不知道为什么就把东西放在那里。对于第二次计数,您需要提供更多信息。考虑问一个单独的问题。
GROUP BY l.img_id