我花了几天时间试图以有限的成功解决这个问题,我确信有一个简单的答案,但尽管进行了大量研究,但到目前为止还没有运气,我担心问题是我有限的 SQL 知识。
我有 3 张桌子。订单、订单产品和订单产品属性。
我正在尝试返回给定订单的结果表,显示所有匹配的 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 行。
对不起,如果我动作慢,但我似乎无法从这里继续前进。
TIA,安德鲁