Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Не получается создать правильный запрос . Создала 3 таблицы c данными :
1 табл order :
id| name
1 Olya
2 Nata
3 Lara
4 Jane
5 Lena
6 Lara
7 Jane
8 Lara
9 Olya
10 Olya
11 Lena
12 Lena
2 табл order_make:
id | order_id| product_id | quantity
1 1 2 4
2 1 3 3
3 1 4 1
4 2 2 10
5 2 3 5
6 3 1 2
7 4 2 1
8 5 4 6
9 6 1 7
10 7 1 8
11 7 4 5
12 8 1 3
13 9 3 7
14 10 2 10
15 11 1 4
16 11 2 3
17 12 1 7
18 12 3 10
19 12 4 4
3 табл product :
id| name|price
1 Sams 100.99
2 Apple 91.99
3 HTC 87.29
4 LG 97.79
Не получается написать правильный запрос что бы из этих трех таблиц вывел итоговую таблицу :
Есть 1я таблица
id| name
1 Olya
2 Nata
3 Lara
4 Jane
5 Lena
6 Lara
7 Jane
8 Lara
9 Olya
10 Olya
11 Lena
12 Lena
Покажется смешно,но наверное лучше обьяснить не смогу:
В ней 5 юзеров, (id) из 1й табицы привязан к второй таблице (order_id) .
1)Lena(id -12,11,5) сделала заказ с второй таблицы (order_id это id покупателя). В первый заход Lena id-12 купила через вторую таблицы (id -19,product_id - 4 quantity - 4)
то есть она купила 4 телефона LG по цене 97.79 = 391.16; тоже самое c (id -18 ,product_id - 3,quantity-10) = 87.29 * 10 = 872.9 ; потом(id -17 ,product_id - 1,quantity-7) = 100.99 * 7 = 706.93 ; Тоесть за первый заход Lena id 12 = 1970.99(идет в result).
За второй заход та самая Lena но с id 11(id -16 ,product_id - 2,quantity-3) 91.99 * 3 = 275.97 , пототм Lena id 11 (id -15 ,product_id - 1,quantity-4)100.99 *4 = 403.96. Lena id-11 = 679.93(идет в result);
Забыла еще в result написать Lena id-5, (id -8 ,product_id - 4,quantity-6)97.79* 6 =586.74 . это идет в столбец result тоже;
В столбец TotalPerClient идет общая сумма заказа Lena = 1970.99 +679.93 +586.74 = 3237.66
Должная получится таблица :
______________________________________________________
Name | Result | | TotalPerClient
1 Lena |12 -1970.99 ,11-679.93, 5-586.74 | 3237.66
2 Olya |10 - , 9- |
3...
4...
5...
______________________________________________________
Проблема с запросом
Отредактированно tookind (11.12.2017 21:21:03)
Неактивен
join использовать умеете?
возьмите за основу
Неактивен
vasya написал:
join использовать умеете?
возьмите за основуselect * from `order` o join order_make on o.id=order_id join product p on product_id=p.id
вместо * оставьте нужные поля и добавляйте группировку по `order`.name
Через left join пыталась .целый день читаю.но я что не то пишу .У меня ерунда получается. Result выводит без подсчета суммы; TotalPerClient тоже не получается.
Таблицы вроде правильно сделала,не понимаю в чем дело;а вот вытянуть из этих трех то что нужно не получается;
Мой дамп:
Отредактированно tookind (11.12.2017 22:01:38)
Неактивен
про join подробней см https://sqlinfo.ru/forum/viewtopic.php?id=3210
показывайте ваш вариант как выводите result
Неактивен
vasya написал:
про join подробней см https://sqlinfo.ru/forum/viewtopic.php?id=3210
показывайте ваш вариант как выводите result
SELECT t.customer_name, GROUP_CONCAT(',', t.order_id) orders, GROUP_CONCAT(',', t.amount) amounts, SUM(t.amount) total
FROM (
SELECT o.customer_name, ol.order_id, SUM(ol.quantity * p.price) amount
FROM `order` o LEFT JOIN order_make ol ON ol.order_id = o.id
LEFT JOIN product p ON p.id = ol.product_id
GROUP BY ol.order_id, o.customer_name
ORDER BY o.customer_name, ol.order_id
) t
GROUP BY t.customer_name
ORDER BY `total` DESC
не получается сделать в три столбика
+---------------+--------------------------------------+---------+
| customer_name | orders& amounts | total |
+---------------+--------------------------------------+---------+
|
|
| Lena | ,5 -586.74 ,11 -679.93,12 -1970.99 | 3237.66 |
|
|
+---------------+------------+--------------------------+---------+
Неактивен
Неактивен
в дополнение:
вместо left join достаточно join
сортировка во from-подзапросе игнорируется
зачем в `order_line` коонка id? комбинация ( `order_id`, `product_id`) ведь уникальна?
Неактивен