これを解決するために数日を費やしましたが、成功は限られていました。簡単な答えがあると確信していますが、かなり多くの調査にもかかわらず、これまでのところ運がありません。問題は私の SQL の知識が限られていることです。
私は3つのテーブルを持っています。注文、orders_products、およびorders_products_attributes。
特定の注文の結果テーブルを返し、一致するすべての orders_products を表示し、その製品が存在する場合は 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行すべてをマージすることにしか成功しません。
遅くて申し訳ありませんが、ここから先に進むことができないようです。
アンドリュー・ティア