我有以下查询,可为订单提取所有订单:

SELECT
   order_id,
   GROUP_CONCAT(order_item_name SEPARATOR ' | ') as 'items'
FROM
   wp_woocommerce_order_items oi1
WHERE
   oi1.order_item_type = 'line_item'
   AND order_id = 422
GROUP BY
   order_id


它返回我想要的结果:

mysql - 连接来自不同表的值时使用GROUP_CONCAT和CONCAT-LMLPHP

我现在想做的是从另一个看起来像这样的表中添加数据:

SELECT * FROM wp_woocommerce_order_itemmeta where order_item_id = 17

wp_woocommerce_order_itemmetawp_woocommerce_order_items加入order_item_id

mysql - 连接来自不同表的值时使用GROUP_CONCAT和CONCAT-LMLPHP

因此,我最终想要的结果将类似于:

order_item_name:_qty:_line_subtotal

order_id | items
--------- -----------------------------------
422      | Metal Polish:1:13.09

最佳答案

由于wp_woocommerce_order_itemmeta中的每个值都在其自己的行中,因此您需要多次联接该表。

SELECT order_id, GROUP_CONCAT(
   order_item_name,':',qty.meta_value,':',subtotal.meta_value SEPARATOR ' | '
) as 'items'

FROM wp_woocommerce_order_items oi1

JOIN wp_woocommerce_order_itemmeta qty ON
    qty.order_item_id = oli.order_item_id
    AND qty.meta_key = '_qty'
JOIN wp_woocommerce_order_itemmeta subtotal ON
    qty.order_item_id = oli.order_item_id
    AND qty.meta_key = '_line_subtotal'

WHERE oi1.order_item_type = 'line_item'
   AND order_id = 422
GROUP BY order_id

关于mysql - 连接来自不同表的值时使用GROUP_CONCAT和CONCAT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32703377/

10-12 15:57