Я потратил пару дней, пытаясь решить эту проблему с ограниченным успехом, я уверен, что есть простой ответ, но пока безуспешно, несмотря на большое количество исследований, боюсь, проблема в моих ограниченных знаниях SQL.
У меня есть 3 таблицы. orders, orders_products и orders_products_attributes.
Я пытаюсь вернуть таблицу результатов для данного заказа, показывая все совпадающие продукты orders_products_attributes для того продукта, где он существует (иногда нет атрибутов)
Мне нужно сюда:
SELECT oi.orders_id AS orderid
, oi.products_id AS ItemNumber
, oi.products_quantity AS Quantity
, oi.final_price AS CostPerUnit
, oi.products_name AS ItemTitle
, concat (patt.products_options_id, '-', patt.products_options_values_id) AS OptionCodes
, concat (patt.products_options, ': ', patt.products_options_values) AS OptionNames
FROM orders_products oi
JOIN orders o
ON o.orders_id = oi.orders_id
LEFT JOIN orders_products_attributes patt
ON patt.orders_products_id = oi.orders_products_id AND patt.orders_id = oi.orders_id
WHERE o.orders_status =2 AND oi.orders_id =10346
ORDER BY ItemNumber
, который возвращает следующие результаты:
orderid ItemNumber Quantity CostPerUnit ItemTitle OptionCodes OptionNames
10346 140 1 319.9982 Item 1 3-5 Choice: A
10346 140 1 319.9982 Item 1 1-1 Choice2: B
10346 210 1 112.5000 Item 5 NULL NULL
Я пытаюсь объединить строки, в которых ItemNumber совпадает, объединяя OptionCodes и OptionNames, где они существуют, чтобы в итоге получить:
orderid ItemNumber Quantity CostPerUnit ItemTitle OptionCodes OptionNames
10346 140 1 319.9982 Item 1 3-5, 1-1 Choice: A, Choice2: B
10346 210 1 112.5000 Item 5 NULL NULL
Я пытался их GROUP_CONCAT, но удалось объединить все 3 строки.
Извините, если я медлительный, но я просто не могу двигаться дальше.
ТИА,
Andrew