#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