嗨, 我想在同一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
感谢您的帮助。
答案 0 :(得分:0)
您将需要使用LEFT JOIN
至v
,以便在答案没有投票时返回行。用显式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