我有这样的查询:
SELECT c.review, u.username, c.date, c.good, c.rate_id, r.rating
FROM comments AS c
LEFT JOIN users AS u
ON c.user_id = u.user_id
LEFT JOIN items as i
ON i.items_id = c.item_id
LEFT JOIN master_cat AS m
ON m.cat_id = i.cat_id
LEFT JOIN ratings as r
ON r.item_id = c.item_id
WHERE i.item = '{$item}' AND c.user_id = r.user_id
ORDER by {$sort};
但这是限制性的。因为如果WHERE语句(c.user_id = r.user_id
)匹配,我JSON打印出c.rating
。如果没有,它在我的应用程序中打印出来,它将跳过我需要的数据。
例如,如果它将评论与来自同一用户的评级相匹配,则会将数据配对。但是有些评论不还有与之相关的评分(您可以从1到5评级)。因此,我不想使用不灵活的WHERE子句跳过数据,而是将其设置为有条件并打印出0以后我可以说IF 0, print out "not rated"
。 (这不会在SQL中完成,而是JAVA。在SQL中,我只需要在MySQL
数据库中存储0。)
我假设我需要放弃WHERE
并成为SELECT
的一部分?
答案 0 :(得分:1)
LEFT JOIN ratings as r
ON r.item_id = c.item_id AND c.user_id = r.user_id
WHERE i.item = '{$item}'
当放入where
子句时,该条件会将left join
转换为inner join