У меня есть SUM(value)
, который подсчитывает голоса за каждый idea
, но на это влияет сумма tag
с каждой идеей.Группа MySQL, воздействуя на другую группу
Например,
SELECT
id,
title,
description,
COALESCE(SUM(case when value > 0 then value end),0) votes_up,
COALESCE(SUM(case when value < 0 then value end),0) votes_down,
GROUP_CONCAT(DISTINCT tags.name) AS 'tags',
FROM ideas
LEFT JOIN votes ON ideas.id = votes.idea_id
LEFT JOIN tags_rel ON ideas.id = tags_rel.idea_id
LEFT JOIN tags ON tags_rel.tag_id = tags.id
GROUP BY ideas.id
Так что, если есть более чем один tags.name
, то SUM()
умножается на число tags.name
Как я могу это исправить?
Каждый другой СУБД будет отклонять это заявление. Прочтите этот http://rpbouman.blogspot.de/2007/05/debunking-group-by-myths.html и этот http://www.mysqlperformanceblog.com/2006/09/06/wrong-group-by-makes Ваши запросы-хрупкие/чтобы понять, что не так с вашим использованием 'group by'. –