繁体   English   中英

Mysql查询在左连接中返回错误的结果

[英]Mysql query return wrong result in left join

我正在使用Codeigniter和MySQL。 我有两个表名作为informationreview

这里我附上了我的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM