Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用woocommerce和mysql检索订单中每个类别的产品数量?_Mysql_Wordpress_Woocommerce - Fatal编程技术网

是否可以使用woocommerce和mysql检索订单中每个类别的产品数量?

是否可以使用woocommerce和mysql检索订单中每个类别的产品数量?,mysql,wordpress,woocommerce,Mysql,Wordpress,Woocommerce,新手,就像你以前一样。我找到了以下代码来检索订单中的所有产品项,但我还想检索每个订单中每个父类别的产品数量。我有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_em

新手,就像你以前一样。我找到了以下代码来检索订单中的所有产品项,但我还想检索每个订单中每个父类别的产品数量。我有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”。这意味着她只买了一种产品。我试图补充

where oi.order_item_type = 'line_item'
然后选择

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\u id)
得到52,而我只期望得到1。而且,由于我想知道每个类别的产品数量,我知道这对我来说太复杂了,到目前为止无法理解


顺便说一句,如果始终需要进行id后比较,那么是否需要将其作为案例的一部分?@草莓嘿,我现在已尝试进一步解释我的问题。如果需要的话,我不这么认为,这只是我在stackoverflow上找到的一些代码。谢谢你的帮助,我只能再次向你推荐我的原始评论。