我正在努力压缩数量 查询我的(php)mysql数据库和 我有以下问题:
对于最近发布的10条评论,我显示了平均评论 评级是否与该评论相关联的图像
MySQL是:
SELECT
obj_images.fk_obj_id AS has_images,
AVG(obj_rating) AS rating
/*other joined tables with obj_comments omitted for clarity ...*/
FROM obj_comments
INNER JOIN obj_images
ON obj_comments.fk_obj_id=obj_images.fk_obj_id
GROUP BY obj_comments.fk_obj_id
ORDER BY comment_id DESC
LIMIT 10
即使没有与评论相关联的图像, has_images仍然返回一个值,理想情况下,当没有与之关联的图像时,我希望返回零 评论和1与有关联的图像时
我错过了什么?
感谢您提供任何提示
答案 0 :(得分:0)
使用外部联接和IFNULL()
而不是内部联接。
SELECT
AVG(c.obj_rating) AS avg_rating
IFNULL(i.fk_obj_id, 0) AS has_images,
/* ... */
FROM
obj_comments c
LEFT JOIN obj_images i ON c.fk_obj_id = i.fk_obj_id
GROUP BY
c.fk_obj_id
ORDER BY
c.comment_id DESC
LIMIT 10
另外,我认为声明表别名是个好主意。
答案 1 :(得分:0)
我不知道我是否完全理解您的问题,但如果您想查看您的请求是否返回任何结果,您可以使用mysql_num_rows
例如:
$result = mysql_query("SELECT * FROM table1");
$num_rows = mysql_num_rows($result);
如果没有返回结果,则 $num_rows = 0
。