MYSQL COUNT返回NULL?

时间:2012-03-20 04:10:07

标签: php mysql sql aggregate-functions

我搜索了我的问题,但没有得到答案。 我想列出以下sql的所有结果,包括NULL(当COUNT(review.id)也返回0)但我只是得到了只包含审查的文章的结果。

$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";

2 个答案:

答案 0 :(得分:0)

请使用左连接查看表而不是加入。默认情况下,join是内连接,因此只需匹配的记录。

答案 1 :(得分:0)

sql应该是:

$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";
它工作正常!大家好!