Присоединяйтесь, группируйте и суммируйте в MySQL - PullRequest
0 голосов
/ 06 февраля 2010

У меня есть следующие три таблицы в базе данных MySQL для оценки пользователей:

Users:

id    name
-----------
1     Smith
2     Brown


Comments:

id    user_id    post_id    comment
-----------------------------------
1     2          1          Test 1
2     1          1          Test 2
3     1          1          Test 3


Scores:

id    user_id    comment_id    score
------------------------------------
1     1          1             1

Теперь я хочу выбрать все комментарии для post_id = 1, а также имя пользователя и сумму всех баллов для этого конкретного комментария. Сначала это выглядит очень просто, я пришел с этим запросом:

SELECT users.name, comments.comment, SUM(scores.score) AS score
FROM comments
LEFT JOIN users ON users.id = comments.user_id
LEFT JOIN scores ON scores.comment_id = comments.id
WHERE comments.post_id = 1
GROUP BY scores.comment_id

Кажется, это работает, но когда нет оценки для конкретного комментария, комментарий не появляется, потому что MySQL не может GROUP BY NULL, я думаю Итак, есть ли способ включить эти комментарии без рейтинга? Как это:

Query result:
name     comment    score
-------------------------
Brown    Test 1     1
Smith    Test 2     0
Smith    Test 3     0

1 Ответ

2 голосов
/ 06 февраля 2010

Вы могли бы попробовать группировать по comments.id вместо этого, возможно?

...