MYSQL:按结果合并/合并两个记录集

时间:2019-06-20 08:25:32

标签: mysql join group-by

我正在尝试为订单建立产品选择列表,因此在大订单系统中,供应商可以轻松地准备他们的订单。

具有三个常规表(订单,order_products,order_options)。

这是我的查询和结果

SELECT op.order_id ,  op.name, op.product_id, op.order_product_id, op.quantity,  
GROUP_CONCAT(oo.product_option_id SEPARATOR ',') as option_ids, GROUP_CONCAT(oo.product_option_value_id SEPARATOR ',') as value_ids
FROM `o2oeco_order_product` AS op LEFT JOIN `o2oeco_order_option` AS oo ON oo.order_product_id = op.order_product_id
WHERE op.order_id IN (380,381) 
GROUP BY op.product_id,oo.order_product_id
ORDER BY `order_product_id`  DESC

orderid name    product_id  order_product_id quantity   option_ids  value_ids   
381     sample pr   207     540     6   NULL    NULL
381     sample pr   219     539     1   308     228
381     sample p    219     538     2   308     227
381     079c1477    221     537     2   367,368,338     340,341,298
381     079c1477    221     536     3   367,368,338     339,342,283
380     e7181331    212     535     3   NULL    NULL
380     Sample p    198     534     1   NULL    NULL
380     079c1477    221     533     1   367,368,338     339,342,283
380     079c1477    221     532     2   367,368,338     340,342,298
380     079c1477    221     531     1   338,367,368     283,340,341
380     079c1477    221     530     1   367,368,338     340,341,324
380     079c1477    221     529     1   367,368,338     340,341,298

现在,我想基于product_id和product_option合并/组合或分组(不确定)结果,以便可以将具有相同选项值的相同产品合并在一起以轻松选择相同的物理产品

enter image description here

我需要合并以上结果(应该合并第四行和第十二行),第四行的数量应为3(2 + 1),实际上我要合并具有相同选项值的相同产品的数量。


orderid name    product_id  order_product_id quantity   option_ids  value_ids   
381     sample pr   207     540     6   NULL    NULL
381     sample pr   219     539     1   308     228
381     sample p    219     538     2   308     227
380,381 079c1477    221     537     3   367,368,338     340,341,298
380,381 079c1477    221     536     4   367,368,338     339,342,283
380     e7181331    212     535     3   NULL    NULL
380     Sample p    198     534     1   NULL    NULL
380     079c1477    221     532     2   367,368,338     340,342,298
380     079c1477    221     531     1   338,367,368     283,340,341
380     079c1477    221     530     1   367,368,338     340,341,324

1 个答案:

答案 0 :(得分:0)

我不了解您对查询结果的看法。但是,如果您想获得这样的查询结果:

380,381

GROUP_CONCAT( orderid SEPARATOR ',' ) AS group_order_id,