[英]Mysql query return wrong result in left join
我正在使用Codeigniter和MySQL。 我有两个表名作为information
和review
。
这里我附上了我的information
表的图片截图。
这是我的review
表
这是我的info_img
表
现在,我希望按照mytable
information id
获得完全没有review
。
在这里,我写了这样的查询:
SELECT
info.*,
info_img.name AS image,
COUNT(rev.review_id) AS total
FROM
information AS info
LEFT JOIN
info_img ON info.information_id = info_img.information_id
LEFT JOIN
review AS rev ON rev.information_id = info.information_id
WHERE
info.status = 1
AND FIND_IN_SET('3', info.category)
GROUP BY rev.information_id
ORDER BY info.information_id ASC
LIMIT 0 , 3
我得到18条评论information_id = 8
,因为information_id = 8
这是错误的。 而不是它,我想将review_id information_id = 8
审核计数为6。
我认为你所要做的就是增加你的数量......:
select info.*,info_img.name as image,count(distinct rev.review_id) as total
from information as info
left join info_img
ON info.information_id = info_img.information_id
left join review as rev
ON rev.information_id = info.information_id
WHERE info.status =1
AND FIND_IN_SET('3', info.category)
GROUP BY rev.information_id
order by info.information_id Asc
LIMIT 0,3
它发生的原因可能是因为信息表乘以结果(看起来是3)所以每个review_id将被计数3次,因此 - 计数不同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.