Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 执行连接和计数的正确mysql查询是什么?_Php_Mysql - Fatal编程技术网

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