Sql запрос - получить ID всех заказов woocommerce cо статусом wc-processing по каждому клиенту
Хочу получить ID всех заказов woocommerce cо статусом wc-processing по каждому клиенту. Точнее взять все заказы со статусом wc-processing и вывести уникальные емейлы заказчиков, их имена и список id заказов. Хочу сделать одним sql запросом. Сейчас в 2 запроса + код php:
// Все заказы со статусом wc-processing
$query = "select
p.ID as orders,
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 pm.meta_key = '_billing_first_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_first_name,
max( CASE WHEN pm.meta_key = '_billing_last_name' and p.ID = pm.post_id THEN pm.meta_value END ) as _billing_last_name
from wp_posts p join wp_postmeta pm on p.ID = pm.post_id
where post_type = 'shop_order' and post_status = 'wc-processing' group by p.ID";
$temp_items = $wpdb->get_results( $query, ARRAY_A );
// Оставляем уникальные емейлы
foreach ($temp_items as $n) {
$clients[$n['billing_email']] = $n;
}
$clients = array_values($clients);
// По каждому емейлу собираем список из id заказов со статусом wc-processing
foreach($clients as $key => $client) {
$query2 = "select
group_concat( post_id separator ',' ) as order_ids
from
wp_postmeta pm
join wp_posts p on p.ID = pm.post_id
where
pm.meta_key = '_billing_email' and pm.meta_value = '".$client['billing_email']."' and
p.post_type = 'shop_order' and
p.post_status = 'wc-processing'";
$items = $wpdb->get_results( $query2, ARRAY_A );
$clients[$key]['orders'] = $items[0]['order_ids'];
}
Как можно объединить, чтобы получился такой массив:
orders|billing_email|_billing_first_name|_billing_last_name|
1,4,26|[email protected]|test name|test lastname|