Добрый вечер уважаемое сообщество! Допустим есть такая база:
Таблица users
|_______ id
|_______ name
Таблица orders
|_______ id
|_______ user_id
|_______ amount
Таблица order_items
|_______ id
|_______ order_id
|_______ product_id
|_______ qty
Задача стоит следующая -
без подзапросов для всех пользователей вывести общую сумму заказов и общее кол-во купленных товаров (т.е. SUM(order_items.qty)).
Для первого условия всё просто:
SELECT
u.name,
IFNULL(SUM(o.amount), 0) AS full_amount
FROM
`users` u
LEFT JOIN
`orders` o ON u.id = o.user_id
GROUP BY
u.id
Для полного решения должно быть что-то такое:
SELECT
u.name,
IFNULL(SUM(o.amount), 0) AS full_amount,
IFNULL(SUM(i.qty), 0) AS full_quantity
FROM
`users` u
LEFT JOIN
`orders` o ON u.id = o.user_id
LEFT JOIN
`order_items` i ON i.order_id = o.id
GROUP BY
u.id
В таком варианте full_quantity считается правильно, а full_amount нет, т.к., насколько я понимаю, таблица order_items не группируется при подсчёте, и выдаёт строки с одинаковыми данными из orders но разными из order_items.
Собственно вопрос - какие есть варианты корректного решения данной задачи?
Заранее благодарен!
P.S.: С профессиональным праздником! :)