Newb ie здесь, как вы когда-то были. Я нашел следующий код для извлечения всех товаров из заказов, но я также хотел бы узнать, сколько товаров каждой родительской категории содержится в каждом заказе. У меня есть 5 родительских категорий со многими подкатегориями, но в этом случае интересна только родительская категория.
Вот код, который я нашел:
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 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,
( select group_concat( order_item_name separator '|' ) from www_woocommerce_order_items where order_id = p.ID ) as order_items
from
www_posts p
join
www_postmeta pm on p.ID = pm.post_id
join
www_woocommerce_order_items oi on p.ID = oi.order_id
where
post_type = 'shop_order'
group by
p.ID
Вот пример :
Это столбцы в таблице order_items:
order_item_id, order_item_name, order_item_type, order_id
А вот строки для одного заказа:
6, ProductName, line_item, 515
7, FreeShipping, shipping, 515
8, Tax-2, tax, 515
Здесь мы видим, что кто-то что-то купил с именем «ProductName» с «FreeShipping» и с «Tax-2». Это означает, что она купила только 1 товар. Я попытался добавить
where oi.order_item_type = 'line_item'
, а затем в select
Select COUNT(oi.order_id)
вот так:
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 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,
(select group_concat( order_item_name separator '|' ) from www_woocommerce_order_items where order_id = p.ID ) as order_items,
COUNT(oi.order_id)
from
www_posts p
join
www_postmeta pm on p.ID = pm.post_id
join
www_woocommerce_order_items oi on p.ID = oi.order_id
where
post_type = 'shop_order' and
oi.order_item_type ='line_item'
group by
p.ID
Но в этом примере COUNT(oi.order_id)
привело к 52, когда я ожидается только 1. А также, так как я хочу иметь количество продуктов для каждой категории, я понимаю, что это слишком сложно для меня, чтобы понять.
Помощь будет оценена