MySQL Получение SKU из заказов WooCommerce - PullRequest
0 голосов
/ 30 августа 2018

Я использую SQL Query для получения продукта. и это мой запрос. Но я получаю NULL в ответ. Кто-нибудь может указать, что мне не хватает? В основном, используя этот способ, я мог получить любой мета продукта с деталями заказа.

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

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Я поработал с запросом и нашел ответ, я добавил еще одно объединение для мета-записи, которая не связана с мета-кодом заказа, поэтому мне нужно было отдельное соединение для получения метаданных продукта. так вот что я сделал. С помощью этого способа вы можете получить все метрики приобретенного товара.

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
0 голосов
/ 30 августа 2018

Это выглядит слишком сложно для меня. Я не уверен, что вы пытаетесь сделать.

Если база данных не совсем массивна (более 100 тыс. Сообщений), вам, вероятно, не составит труда написать короткий сценарий для этого.

$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) );

}

В качестве альтернативы, если вам нужно остаться в базе данных, разделите вашу команду на три части.

Пусть первая часть вставит результаты в новую таблицу в новую таблицу.

Тогда делай остальные части из своих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...