как считать и суммировать записи в трех таблицах с помощью mysql phpmyadmin?

#mysql #phpmyadmin

Вопрос:

Я новичок в этом сообществе, а также новичок в MySQL.

Нужно, чтобы COUNT клиенты и SUM комиссия за каждого реферера соответственно использовали запрос MySQL.

таблица ссылок

ID имя ссылки
1 ссылка 1
2 ссылка 2
3 ссылка 3
4 ссылка 4

клиентский стол

ID referrer_id имя клиента
1 1 клиент1
2 1 клиент2
3 2 клиент3
4 3 клиент4
5 4 клиент5

таблица комиссионных

ID client_id комиссия
1 1 20
2 1 32
3 3 24
4 4 15

Я хочу получить результат ниже, используя приведенные выше 3 таблицы.

referrer_id имя ссылки total_client итого_комиссия
1 ссылка 1 2 52
2 ссылка 2 1 24
3 ссылка 3 1 15
4 ссылка 4 1 0

Я попытался выполнить следующий запрос

  SELECT referrer.referrer_name as name,
(SELECT COUNT(*) FROM client WHERE client.referrer_id=referrer.id) as total_client,
(SELECT SUM(commission) FROM commission WHERE commission.client_id=client.id) as total_commission FROM referrer LEFT JOIN client ON client.referrer_id=referrer.id GROUP BY name;
 

Комментарии:

1. Пожалуйста, изучите и проведите некоторое исследование, прежде чем задавать вопрос, мы здесь не для того, чтобы решать ваше задание за вас, если вы застряли на пути его выполнения, мы можем вам помочь, но простая просьба решить вашу домашнюю работу в любом случае вам не поможет.

2. Причина находится чуть выше вашего комментария.

3. Это задание , это проблема, и у вас нет решения. так что приводите здесь доводы в пользу полезности.

4. Вы все равно пытались ее решить? Были ли у вас какие-либо ошибки при этом?

5. Конечно ,я стараюсь с 12 часов и использую php codeigniter 3. он не отображается, иногда он подсчитывает одних и тех же клиентов для каждого реферера, а иногда только ноль.

Ответ №1:

Прочитайте функции объединения и агрегирования Mysql

 SELECT t2.referrer_id,
       t1.referrer_name,
       COUNT(DISTINCT t2.id) AS total_client,
       SUM(t3.commission)                 AS total_commission
FROM referrer t1
         JOIN client t2 ON t1.id = t2.referrer_id
         JOIN commission t3 ON t2.id = t3.client_id
GROUP BY t1.referrer_id
 

Комментарии:

1. Спасибо @Soheil Rahsaz

2. Можем ли мы использовать предложение where или соединение слева в этом запросе.?

3. @onlinegsali, конечно, поставьте WHERE перед группой by. LEFT JOIN также возможно. Будьте осторожны, это sum() возвращает значение null, если суммировать нечего

4. Еще Раз спасибо, @Soheil Rahsaz