2012-03-20 199 views
0

我GOOGLE了我的问题,但没有得到答案。 我想列出下面的SQL的所有结果,包括NULL(当COUNT(review.id)也返回0),而是我只是得到了只包含评论的地方文章的结果。MYSQL COUNT返回NULL?

$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

可能重复[Mysql:Count记录(包括零)每月](http://stackoverflow.com/questions/3486998/mysql-count-records-including-zero-per-month)。有很多,如果你看看:http://stackoverflow.com/search?q=[mysql]+count+zero – 2012-03-20 04:12:39

+0

thx OMG小马,我看了一下,有一个答案! – 2012-03-20 04:37:40

回答

0

请使用左连接作为审查表而不是连接。连接默认情况下是内部连接,所以它将只接受匹配的记录。

+0

我找到了答案! – 2012-03-20 04:33:02

+0

thx btw Vetrivel mp! – 2012-03-20 04:33:24

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

它的工作! thx家伙!