我有以下查询,可为订单提取所有订单:
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
它返回我想要的结果:
我现在想做的是从另一个看起来像这样的表中添加数据:
SELECT * FROM wp_woocommerce_order_itemmeta where order_item_id = 17
wp_woocommerce_order_itemmeta
和wp_woocommerce_order_items
加入order_item_id
因此,我最终想要的结果将类似于:
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/