У меня есть 2 стола: участники и комментарии. Я выбираю всех участников, а затем присоединяюсь к комментариям. Но в комментариях я выбираю несколько СУММ точек, и если пользователь никогда не комментирует, я не могу получить этого пользователя в списке ?!MySql выбирает значение по умолчанию, если результатов нет?
Так как выбрать значение по умолчанию для SUM быть 0, если пользователь не заметил, или некоторые другие решения:
SELECT c.comment_id AS item_id, m.member_id AS member_id, m.avatar,
SUM(c.vote_value) AS vote_value, SUM(c.best) AS best,
SUM(c.vote_value) + SUM(c.best)*10 AS total
FROM members m
LEFT JOIN comments c ON m.member_id = c.author_id
GROUP BY c.author_id
ORDER BY m.member_id DESC
LIMIT 0, 20
EDIT:
Я попытаюсь объяснить .. Итак, есть 2 таблицы, участники и комментарии. Мне нужен список всех пользователей с рейтингом. Комментарии содержат все голоса и лучшие ответы.
Итак, мне нужен листинг всех пользователей, и они забивают.
Пользователи таблица:
member_id - username - avatar
Комментарии таблица
comment_id - author_id - vote_value - best (0 OR 1)
попытался также выбрать из КОММЕНТАРИЕВ и присоединиться к членам, но то же самое еще раз :(
Можете ли вы предоставить некоторые примерные данные с ожидаемым выходом? Я не использую MySQL, поэтому, возможно, у них есть синтаксис ярлыков, но вы GROUPing только в одном столбце, но имеете несколько неагрегированных столбцов в вашем SELECT –
@Tom H .: MySQL фактически разрешает этот синтаксис: [GROUP BY и HAVING with Hidden Columns] (http://dev.mysql.com/doc/refman/5.0/ru/group-by-hidden-columns.html). –
Спасибо, Питер. Я знал, что хотя бы одна из основных РСУБД разрешала это, но не могла вспомнить, что именно. Так как это допускает «нелогичные» группировки, это может привести к «отсутствующим» данным, потому что «при использовании этой функции все строки в каждой группе должны иметь одинаковые значения для столбцов, которые исключены из части GROUP BY. для возврата любого значения из группы, поэтому результаты неопределены, если все значения не совпадают ». c.comment_id не всегда может быть одинаковым для данного c.author_id –