与其他列一起选择SUM时,没有行返回

时间:2019-04-08 01:55:20

标签: mysql

嗨, 我想在同一SELECT中获得一个表的某些行和另一个表的SUM。 这是我的代码:

SELECT DISTINCT a.*, u.username, coalesce(SUM(v.value), 0) AS nbrVotes
FROM class_not_found.answers a, class_not_found.users u, class_not_found.votes v
WHERE a.question_id = :questionId
AND a.user_id = u.user_id
AND v.answer_id = a.answer_id
GROUP BY answer_id

因此,当行具有答案的ID时,我想对'vote'表行的值求和...当我对一个投票投了赞成票时,这是行得通的。 ..我没有返回任何行,但是我想要有'0'... 我能做什么 ?

当某些行带有答案的ID时: https://i.imgur.com/NGHx3bO.png

没有答案ID的行: https://i.imgur.com/eTHN0TU.png

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您将需要使用LEFT JOINv,以便在答案没有投票时返回行。用显式JOIN(首选方式)重写查询:

SELECT DISTINCT a.*, u.username, coalesce(SUM(v.value), 0) AS nbrVotes
FROM class_not_found.answers a
JOIN class_not_found.users u ON u.user_id = a.user_id
LEFT JOIN class_not_found.votes v ON v.answer_id = a.answer_id
WHERE a.question_id = :questionId
GROUP BY a.answer_id