|
|
|
Два RIGHT JOIN с группировкой и SUM
|
|||
|---|---|---|---|
|
#18+
Добрый день. Хочу подсчитать TOP 10 продаваемых товаров. Есть 3 таблички: proshop_orders - список заказов и статус заказа proshop_orders_products - список товаров в заказах с кол-вом и префиксом proshop_products - просто описание продуктов 1. Нужно сначала выбрать продукты заказов proshop_orders_products по префиксу product_sku 2. сравнить их по order_id с с заказом, что бы проверить что у заказа status_id = 4 3. подсчитать количество продаж каждого товара product_qty 4. потом нужно уже выбрать описание продукта из proshop_products по product_id из proshop_orders_products 5. группировать по proshop_products, что бы не было повторяющихся продуктов в итоге получаем список продуктов с кол-вом продаж отсортировано по нему же. уфф, мозголомный запрос получается, возможно ли его вообще реализовать? Код: sql 1. 2. 3. 4. 5. 6. Застрял на том, что нужно как то сделать SUM product_qty и потом сгруппировать всё это. Подскажите пожалуйста. Обычно решаю это на php, но тут проснулась любознательность, хочется наконец подружиться с SQL на нормально уровне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 13:34:05 |
|
||
|
Два RIGHT JOIN с группировкой и SUM
|
|||
|---|---|---|---|
|
#18+
trawen, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Не оно? product_name - название поля, где хранится название товара в таблице proshop_products ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 13:42:49 |
|
||
|
Два RIGHT JOIN с группировкой и SUM
|
|||
|---|---|---|---|
|
#18+
JeStone, спасибо, работает!! Только один вопросик, я сделал еще TOP10 по кол-ву дохода. Там цена умножается на количество в SUM, вот так SUM(pop.product_qty*pop.product_price). Но есть товары проданные за 0 рублей. А MySql как ни в чем при 1*0 выдает 1! Вместо нуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 14:46:05 |
|
||
|
Два RIGHT JOIN с группировкой и SUM
|
|||
|---|---|---|---|
|
#18+
trawen, Покажите исходные данные из всех трех таблиц. ТОР 10 по доходности вы считаете как-то так? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 14:58:01 |
|
||
|
Два RIGHT JOIN с группировкой и SUM
|
|||
|---|---|---|---|
|
#18+
JeStone, отбой. Забыл что там есть товары со свободной цено и суммировались товары у которых и 0 и 1 может быть. Так что всё верно работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2014, 15:00:14 |
|
||
|
Два RIGHT JOIN с группировкой и SUM
|
|||
|---|---|---|---|
|
#18+
trawenДобрый день. Хочу подсчитать TOP 10 продаваемых товаров. Есть 3 таблички: proshop_orders - список заказов и статус заказа proshop_orders_products - список товаров в заказах с кол-вом и префиксом proshop_products - просто описание продуктов 1. Нужно сначала выбрать продукты заказов proshop_orders_products по префиксу product_sku 2. сравнить их по order_id с с заказом, что бы проверить что у заказа status_id = 4 3. подсчитать количество продаж каждого товара product_qty 4. потом нужно уже выбрать описание продукта из proshop_products по product_id из proshop_orders_products 5. группировать по proshop_products, что бы не было повторяющихся продуктов в итоге получаем список продуктов с кол-вом продаж отсортировано по нему же. уфф, мозголомный запрос получается, возможно ли его вообще реализовать? Код: sql 1. 2. 3. 4. 5. 6. Застрял на том, что нужно как то сделать SUM product_qty и потом сгруппировать всё это. Подскажите пожалуйста. Обычно решаю это на php, но тут проснулась любознательность, хочется наконец подружиться с SQL на нормально уровне. с какого перепоя ты решил, что join тут должен быть внешним (right outer в частности)? он тут должен быть внутренним, т.е.просто join. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2014, 06:35:56 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38826951&tid=1833839]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 360ms |

| 0 / 0 |
