Почему объединяющий запрос, содержащий функцию sum, возвращает только 1 строку - PullRequest
1 голос
/ 11 октября 2011

У меня есть 2 таблицы. Проблема и проблема_ голоса. В таблице задач много строк и только одна в таблице голосов.

У меня есть этот запрос:

select
   problems.problem_id,
   creator_member_id,
   problem_title,
   problem_description,
   sum( vote ) as totalVotes,
   problem_date
from problems 
left join problem_votes on
problems.problem_id = problem_votes.problem_id

Я ожидал, что будет возвращен список проблем, но по какой-то причине я получаю только один товар.

Если я возьму функцию суммы, она вернет двадцать строк. Есть ли способ получить запрос, чтобы получить сумму голосов за каждую проблему?

Ответы [ 2 ]

6 голосов
/ 11 октября 2011

Вам нужен GROUP BY, иначе он будет агрегировать всю таблицу вместо того, чтобы возвращать одну строку для каждого problem_id:

SELECT
    problems.problem_id,
    creator_member_id,
    problem_title,
    problem_description,
    sum(vote) as totalVotes,
    problem_date
FROM problems
LEFT JOIN problem_votes
    ON problems.problem_id = problem_votes.problem_id
GROUP BY problems.problem_id

В этом запросе используется расширение MySQL: GROUP BY и HAVING со скрытыми столбцами

2 голосов
/ 11 октября 2011

SUM - это агрегатная функция , вам нужно предложение GROUP BY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...