MySQL: левое соединение, объединение или суммирование, неповторяющиеся строки - PullRequest
0 голосов
/ 10 июля 2020

Делаю реферальную систему с нуля. Есть 2 таблицы: «ПОЛЬЗОВАТЕЛИ» и «ПЛАТЕЖИ». Каждая строка в платежах - это отдельный платеж, возможно, для одного и того же пользователя.

Мне нужно показать наших связанных, сколько у них рефералов, сколько в бесплатном плане и сколько заплатили подписку.

Я сделал это сейчас:

 SELECT u.user_id
      , u.email
      , u.package_id
      , u.date
      , u.package_expiration_date
      , u.country
      , u.utm_id
      , p.amount 
   FROM users u 
   LEFT 
   JOIN payments p
     ON p.user_id = u.user_id
  WHERE u.utm_id = 2;

Это результат:

введите описание изображения здесь

Как видите, user_id "1" дважды заплатил сумму в 24,5 доллара. Мне нужно это в одном столбце, чтобы показать общую уплаченную сумму (49 долларов) , а в PHP - какой-то процент.

Есть подсказки?

1 Ответ

3 голосов
/ 10 июля 2020

Быстрое агрегирование должно помочь, остальные столбцы удалены для удобства

SELECT 
   `users`.`user_id`, `users`.`email`,`users`.`utm_id`,
  SUM(payments.amount)  as total_sum
FROM `users`    
LEFT JOIN `payments` ON `payments`.`user_id` = `users`.`user_id`
WHERE `users`.`utm_id` = '2'
GROUP BY `users`.`user_id`, `users`.`email`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...