Как присоединить 3 таблицу с помощью JOIN?

122
25 апреля 2019, 09:20

Есть SQL JOIN запрос на 2 таблицы

SELECT
  users.*,
  sum(payments.amount) as `summ`
FROM `users`
LEFT OUTER JOIN `payments` ON `users`.`id` = `payments`.`user_id`
WHERE payments.created_at  BETWEEN '$yesterday' and '$today' AND `status` = '2'
GROUP BY user_id

Как добавить 3 таблицу в этот JOIN запрос? Нужно добавить таблицу qiwi_withdraws тоже объединить её по ID, а затем так же сделать выборку по status=2, created_at, подсчитать и сгруппировать по amount

Answer 1

Таблицу вторую присоединить можно так же, как и первую:

FROM users u
JOIN payments p ON u.id = p.user_id
JOIN qiwi_withdraws q ON u.id = q.user_id

Для Вашей задачи это не подойдет. Во всяком случае, я не знаю, как взять нужные суммы без подзапросов. Если их использовать, то Ваш запрос может выглядеть так:

SELECT users.*, 
(SELECT sum(amount) FROM payments 
    WHERE user_id = users.id AND status = 2 
    AND (created_at BETWEEN '$yesterday' AND '$today')) as payments_sum,
(SELECT sum(amount) FROM qiwi_withdraws 
    WHERE user_id = users.id AND status = 2
    AND (created_at BETWEEN '$yesterday' AND '$today')) as qiwi_sum
FROM users
READ ALSO
Запрос MYSQL с выбором CASE

Запрос MYSQL с выбором CASE

Есть таблица с картинками

166
Навешивание Angular 7 на HTML генерируемый сервером. Как лучше?

Навешивание Angular 7 на HTML генерируемый сервером. Как лучше?

Проектируем блочный визуальный конструктор сайтовСервер будет отдавать размеченный готовый HTML блоков, но весь визуальный интерфейс, все...

155
vue отправка формы без button и input

vue отправка формы без button и input

Имеется форма и нужно её отправить без button и input использую (a)Почему без? Ломаются стили

169
Верстка email писем 2к18/19

Верстка email писем 2к18/19

Уже несколько лет не верстал email-писем, изменилось ли что-нибудь? Мы по прежнему верстаем на таблицах, а стили – инлайним? Я пытался найти статистики...

160