2016-03-01 50 views
3

我正在使用Codeigniter和MySQL。我有兩個表格名稱informationreviewMysql查詢返回錯誤導致左連接

在這裏我附上了我的information表的圖片截圖。

enter image description here

這是我review

enter image description here

,這是我info_img

enter image description here

現在,我想information id獲得總沒有review根據mytable

在這裏,我已經寫了這樣的查詢:

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這是錯誤的。取而代之的是,我希望審查計數爲6的information_id = 8

回答

2

我認爲,所有你需要做的就是添加不同你的還..:

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次,因此 - 計數不同

+0

謝謝。它的工作。 –