我有两个表:dilemme
和like
。
第一个包含文章,第二个包含投票。
该脚本随机选择一篇文章展示,用户可以投票(它是喜欢和不喜欢)。
我想查询只显示超过5票的文章,没有投票的文章等于0。
所以我尝试了这个:
SELECT d.ph1, d.ph2, d.id, SUM(l.vote) AS score
FROM dilemme d
LEFT JOIN like l
ON d.id = l.id_dilemma
WHERE d.valid = 'yup'
GROUP BY d.id HAVING SUM(l.vote) > 0
它正确显示了至少有一票并且投票总和大于0的行。这很好但是,如何选择没有投票的文章? 我尝试了很多东西并做了一些研究,但无法解决我的问题。 我认为INSERT INTO就像0票,但我不认为这是一个好主意,因为它不是一个非常优化的解决方案。
提前致谢。 PS:对不起我的英语,不是我的monthertongue;)
答案 0 :(得分:7)
这应包括具有正面投票的文章,或包含使用COUNT(l.id_delemma) = 0
SELECT d.ph1, d.ph2, d.id, SUM(l.vote) AS score
FROM dilemme d
LEFT JOIN like l
ON d.id = l.id_dilemma
WHERE d.valid = 'yup'
GROUP BY d.id
HAVING
SUM(l.vote) > 0
OR COUNT(l.id_delemma) = 0
答案 1 :(得分:2)
在select
和having
子句中使用ifnull函数:
...having(ifnull(l.vote,0)) > 0...
答案 2 :(得分:1)
SELECT d.ph1, d.ph2, d.id, SUM(IFNULL(l.vote, 0)) AS score
FROM dilemme d
LEFT JOIN like l
ON d.id = l.id_dilemma
WHERE d.valid = 'yup'
GROUP BY d.id
HAVING score > 0
但我不确定你对此的期望是怎样的。如果某个项目没有投票,其得分如何大于0?