mysql从商业订单获取sku

wkyowqbh  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(278)

我正在使用sql查询获取产品的\u sku。这是我的问题。但我的回答是空的。有人能指出我遗漏了什么吗?基本上使用这种方式,我可以得到任何产品元与订单细节。

select 
p.ID as order_id, 
p.post_date, 
max( CASE WHEN pm.meta_key = '_billing_email' and p.ID = pm.post_id THEN pm.meta_value END ) as billing_email,
max( CASE WHEN oim.meta_key = '_product_id' and oim.order_item_id = oi.order_item_id  THEN oim.meta_value END ) as product_id,
max( CASE WHEN pm.meta_key = '_sku' and p.ID = oim.meta_value THEN pm.meta_value END ) as sku,
( select group_concat( order_item_name separator '|' ) from wp_woocommerce_order_items where order_id = p.ID ) as order_items
from 
wp_posts p
join wp_postmeta pm on p.ID = pm.post_id
join wp_woocommerce_order_items oi on p.ID = oi.order_id
join wp_woocommerce_order_itemmeta oim on oim.order_item_id = oi.order_item_id
group by 
p.ID
mv1qrgav

mv1qrgav1#

这对我来说太复杂了。我不知道你想做什么。
如果数据库不是非常庞大(超过10万篇文章),那么您可能不需要为此编写一个简短的脚本。

$file = fopen("skus.csv","w");

$orders = wc_get_orders();

foreach ( $orders as $order ) {
  $items = $order->get_items();

  foreach ( $items as $single_item ) 
    fputcsv($file, get_post_meta( $single_item->ID, '_sku', TRUE) );

}

或者,如果您必须留在数据库中,请将命令分为三部分。
让第一部分将结果插入到新表中的新表中。
然后从他们的身体做其他部分。

xtfmy6hx

xtfmy6hx2#

我已经处理了查询并找到了答案,我为post meta添加了另一个连接,它没有连接到order id的post meta,所以我需要单独的连接来获取产品meta。所以我就是这么做的。用这种方法你可以得到所有购买产品的元。

select 
p.ID as order_id, 
p.post_date, 
max( CASE WHEN pm.meta_key = '_billing_email' and p.ID = pm.post_id THEN pm.meta_value END ) as billing_email,
max( CASE WHEN oim.meta_key = '_product_id' and oim.order_item_id = oi.order_item_id  THEN oim.meta_value END ) as product_id,
max( CASE WHEN opm.meta_key = '_sku' and oim.meta_value = opm.post_id THEN opm.meta_value END ) as sku,
( select group_concat( order_item_name separator '|' ) from wp_woocommerce_order_items where order_id = p.ID ) as order_items

from 
wp_posts p
join wp_postmeta pm on p.ID = pm.post_id
join wp_woocommerce_order_items oi on p.ID = oi.order_id
join wp_woocommerce_order_itemmeta oim on oim.order_item_id = oi.order_item_id
join wp_postmeta opm on opm.post_id = oim.meta_value
group by 
p.ID

相关问题