SQLITE - правильно переносить строки в столбцы
Я располагаю базой данных, содержащей таблицу для заказа продуктов, например:
order_id | prod_code | prod_color | size | quantity |
-----------------------------------------------------
1 SHIRT 001 S 10
1 SHIRT 001 M 7
1 SHIRT 001 L 8
1 SHIRT 001 XL 1
1 SHIRT 995 S 2
1 SHIRT 995 M 1
1 SHIRT 995 L 0
1 SHIRT 995 XL 1
2 PANTS ....
и таблица цен на продукты, как это:
prod_code | prod_color | price | currency
-----------------------------------------
SHIRT 001 10 EUR
SHIRT 001 9 USD
SHIRT 001 50 YEN
SHIRT 001 15 RUB
SHIRT 995 20 EUR
SHIRT 995 29 USD
SHIRT 995 100 YEN
SHIRT 995 45 RUB
PANTS ....
то, что я хотел бы получить, - это представление (для простоты, отфильтрованного по order_id):
order_id | prod_code | prod_color | size | quantity | EUR | USD | YEN | RUB
---------------------------------------------------------------------------
1 SHIRT 001 S 10 10 9 50 15
1 SHIRT 001 M 7 10 9 50 15
1 SHIRT 001 L 8 10 9 50 15
1 SHIRT 001 XL 1 10 9 50 15
1 SHIRT 995 S 2 20 29 100 45
1 SHIRT 995 M 1 20 29 100 45
1 SHIRT 995 L 0 20 29 100 45
1 SHIRT 995 XL 1 20 29 100 45
Я уже просматривал в Интернете и через SO, и я нашелЭТОТ ВОПРОС это показывает мне именно то, что мне нужно сделать, но я думаю, с некоторыми изменениями ...
Я попытался выполнить этот запрос к базе данных:
SELECT o.order_id, o.prod_code, o.prod_color, o.size, o.quantity,
MAX(CASE WHEN p.currency = 'EUR' THEN p.price END) AS 'EUR',
MAX(CASE WHEN p.currency = 'USD' THEN p.price END) AS 'USD',
MAX(CASE WHEN p.currency = 'YEN' THEN p.price END) AS 'YEN',
MAX(CASE WHEN p.currency = 'RUB' THEN p.price END) AS 'RUB'
FROM products_order o JOIN products_prices p ON o.prod_code = p.prod_code
WHERE o.order_id = 1
GROUP BY o.order_id, o.prod_code, o.prod_color, o.size, o.quantity
будет возвращать в столбцах цен, для каждой строки, значение MAX, найденное во всем столбце: так что и для [product_color = 001], и для [product_color = 995] у меня цена равна 20 евро (когда для 001 это дешевле всего 10 евро!)
Я пробовал также без MAX, но он дает мне по одной строке для каждой цены, оставляя много ячеек пустыми (тогда я понял, для чего используется MAX: D).
Вы знаете способ сделать то, что я пытаюсь сделать? Как я могу использовать MAX внутри одного prod_color вместо каждого prod_color?
Я надеюсь, что вы можете понять, что я написал, заранее спасибо, любая помощь приветствуется.
(если вам нужно что-то объяснить более четко, просто спросите и как можно скорее я отвечу.
Еще раз спасибо, с наилучшими пожеланиями