SQL中的条件语句定义变量

时间:2012-09-28 18:38:15

标签: sql conditional

我有这样的查询:

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的一部分?

1 个答案:

答案 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