@xonar
А смысл?

Как группировать с помощью GROUP BY?

Здравствуйте.
Мне нужно подсчитать все значения в поле amount (payments.amount при JOIN) по юзеру. Если юзер сделал 2 платежа, то их сгруппировать и выдать одно общее значение. Затык у меня в GROUP BY

SELECT  * FROM `users` LEFT OUTER JOIN `payments` ON `users`.`id` = `payments`.`user_id` WHERE payments.created_at  BETWEEN '2017-05-19 14:23:46' and '2017-06-19 14:23:46' and `status` = 2 GROUP BY 'payments.amount'


В упор не понимаю, где допускаю ошибку. Если убераю GROUP BY 'payments.amount' то запрос работает на все 100%
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
payments.amount, это же сумма платежа? Зачем по ней группировать?
При том, что вы сами пишете, что нужно сгруппировать по юзеру.
SELECT users.*, sum(payments.amount) as `summ`
FROM `users` 
LEFT OUTER JOIN `payments` ON `users`.`id` = `payments`.`user_id`
WHERE payments.created_at  BETWEEN '2017-05-19 14:23:46' and '2017-06-19 14:23:46'
  AND `status` = 2
GROUP BY user.id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы