|  | 
Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Есть три таблицы order,order_line, product, 
нужно обратится с прямым запросом что бы получилось как на фото
Где Name - имя покупателя, Result - два наибольших заказа через запятую, слева id заказа и справа - сумма по заказу, колонка TotalSumPerCustomer - показывает общую сумму покупок клиента.
У меня проблемы со средним столбцом, так что бы оставить два самых больших сапроса(не более двух)
SELECT o.customer_name, GROUP_CONCAT(CONCAT_WS(' - ', ol.order_id, p.price) ORDER BY p.price DESC SEPARATOR ' , ')
FROM .order o
LEFT JOIN order_line ol
ON o.id = ol.order_id
LEFT JOIN product p 
ON ol.product_id = p.id
GROUP BY o.customer_name
c таким дампом:
Отредактированно Valdimar (25.03.2018 02:32:32)
Неактивен
Name          Result                                 TotalSumPerCustumer
1    Linda         12 -1996.99, 11 - 686.93            3276.66
2    Bob           10 -929.90, 9 - 621.53                2120.57 
3    Anna          7 - 1309.87, 4 - 92.99               1402.86
4    John          2 - 1373.85                               1373.85
5    Jane          6 - 717.93, 8 - 305.97                1223.88
Фото не загрузилось
Неактивен

Неактивен
какой же он огромен :mad
Vasya ты спас только три дня жизни моей, +100500 в твою карму!
....как часто в твоей жизни на работе приходится работать с такими запросами?
Неактивен

Valdimar написал:
какой же он огромен :mad
давайте ещё немного увеличим 
чтобы правильно обрабатывался случай, когда у пользователя два заказа с одинаковой максимальной стоимостью 
Неактивен
vasya написал:
Valdimar написал:
какой же он огромен :mad
давайте ещё немного увеличим
чтобы правильно обрабатывался случай, когда у пользователя два заказа с одинаковой максимальной стоимостьюselect customer_name,
(select concat(t1.order_id, ' - ', t1.order_sum, ',', ifnull(t2.order_id,''), ' - ', ifnull(t2.order_sum,'')) from
(select customer_name, order_id, order_sum from `order` join
(select `order_id`, sum(`quantity` * `price`) order_sum
from `order_line` join `product` on `product`.id = `order_line`.product_id
group by `order_id`) t on `order`.id = t.order_id) t1
left join
(select customer_name, order_id, order_sum from `order` join
(select `order_id`, sum(`quantity` * `price`) order_sum
from `order_line` join `product` on `product`.id = `order_line`.product_id
group by `order_id`) t on `order`.id = t.order_id) t2
on t1.customer_name=t2.customer_name and t1.order_sum>=t2.order_sum and t1.order_id <> t2.order_id
where t1.customer_name = t3.customer_name
order by t1.customer_name, t1.order_sum desc, t2.order_sum desc limit 1) col2,
sum(order_sum) total_sum_client from
(select customer_name, t.* from `order` join
(select `order_id`, sum(`quantity` * `price`) order_sum
from `order_line` join `product` on `product`.id = `order_line`.product_id
group by `order_id`) t on `order`.id = t.order_id) t3
group by customer_name
Вот с изменёнными названиями как в таблице и....
select customer_name AS Name,
(select concat(t1.order_id, ' - ', t1.order_sum, ',', ifnull(t2.order_id,''), ' - ', ifnull(t2.order_sum,'')) from
(select customer_name, order_id, order_sum from `order` join
(select `order_id`, sum(`quantity` * `price`) order_sum
from `order_line` join `product` on `product`.id = `order_line`.product_id
group by `order_id`) t on `order`.id = t.order_id) t1
left join
(select customer_name, order_id, order_sum from `order` join
(select `order_id`, sum(`quantity` * `price`) order_sum
from `order_line` join `product` on `product`.id = `order_line`.product_id
group by `order_id`) t on `order`.id = t.order_id) t2
on t1.customer_name=t2.customer_name and t1.order_sum>=t2.order_sum and t1.order_id <> t2.order_id
where t1.customer_name = t3.customer_name
order by t1.customer_name, t1.order_sum desc, t2.order_sum desc limit 1) Result,
sum(order_sum) TotalSumPerSecond from
(select customer_name, t.* from `order` join
(select `order_id`, sum(`quantity` * `price`) order_sum
from `order_line` join `product` on `product`.id = `order_line`.product_id
group by `order_id`) t on `order`.id = t.order_id) t3
group by customer_name
.....сейчас отсортирую по Desc
Неактивен