Почему запрос MySQL SUM возвращает только одну строку? - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь создать запрос MySQL, чтобы вернуть сумму всех балансов операторов для каждой учетной записи в моей БД. Запрос выглядит так:

SELECT SUM(balance), handle FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id;

Когда я делаю это, он возвращает только одну строку с одним суммированным балансом и одну учетную запись (учетная запись с идентификатором 1). Что я хочу, так это вернуть все счета с их суммой выписанного баланса. Как бы я этого достиг?

1 Ответ

0 голосов
/ 27 октября 2018

Вам нужно сгруппировать что-нибудь, вероятно, handle (я полагаю, что это связано с идентификатором учетной записи?), В противном случае MySQL SUM все выберет значения, выбранные из JOIN. Добавление предложения GROUP BY приводит к тому, что SUM происходит для каждого отдельного значения столбца в GROUP BY. Измените ваш запрос на:

SELECT SUM(balance), handle FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id
GROUP BY handle;

Если handle не связан с accounts.id и вы хотите получить результаты, сгруппированные по accounts.id, измените запрос на:

SELECT SUM(balance), accounts.id FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id
GROUP BY accounts.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...