MYSQL COUNT return NULL?

爷,独闯天下 提交于 2019-12-25 05:29:07

问题


I have googled my problem but didnt get the answer. I want to list all of the results of below sql including NULL (when COUNT(review.id) return 0 also) but instead i just got the results of articles of place that only contains review.

$sql = "SELECT tbl_place.id, tbl_place.region_id, tbl_place.subregion_id, tbl_place.title, tbl_place.metalink, tbl_place.img_thumbnail, tbl_place.summary, tbl_place.category1_id, tbl_place.category2_id, tbl_place.category3_id, COUNT(review.id) AS total_review FROM tbl_place
        JOIN review ON tbl_place.id = review.place_id
        WHERE
        tbl_place.category1_id = '32'   AND 
        tbl_place.status = '1'          AND
        review.rating != '0.00'         
        GROUP BY tbl_place.id
        ORDER BY total_review $by
        LIMIT $limit OFFSET $offset";

回答1:


please use left join for review table instead of join. join is by default inner join so it will take only matched records.




回答2:


the sql should be :

$sql = "SELECT tbl_place.id, 
tbl_place.region_id, 
tbl_place.subregion_id, 
tbl_place.title, 
tbl_place.metalink, 
tbl_place.img_thumbnail, 
tbl_place.summary, 
tbl_place.category1_id, 
tbl_place.category2_id, 
tbl_place.category3_id, 
(SELECT COUNT(*) FROM review WHERE review.rating != '0.00' AND tbl_place.id = review.place_id ) AS total_review 
FROM tbl_place WHERE 
tbl_place.category1_id = '32' AND 
tbl_place.status = '1'   
GROUP BY tbl_place.id 
ORDER BY total_review $by";

it's working! thx guys!



来源:https://stackoverflow.com/questions/9781240/mysql-count-return-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!