Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
Sql 如何统计在Woocommerce中处于挂起状态的产品的订单?_Sql_Wordpress_Woocommerce_Count_Orders - Fatal编程技术网

Sql 如何统计在Woocommerce中处于挂起状态的产品的订单?

Sql 如何统计在Woocommerce中处于挂起状态的产品的订单?,sql,wordpress,woocommerce,count,orders,Sql,Wordpress,Woocommerce,Count,Orders,我正在尝试制作一个统计脚本,它可以清楚地使用Woocommerce的产品预订、diplaying available、reserved和Seld status。状态命令可在后端管理面板,但我需要使计数和前端可见 例如: 产品名称 可供选择的项目:10个 已预订的项目(但尚未付款):X 售出货品:Y 目前,woocommerce有一个显示每种产品的销售数量的功能,但它同时计算保留(待定状态)和已销售(已完成),因此它是不同类型的计数 我写了一个查询,应该可以找到与挂起状态匹配的订单(wp\u te

我正在尝试制作一个统计脚本,它可以清楚地使用Woocommerce的产品预订、diplaying available、reserved和Seld status。状态命令可在后端管理面板,但我需要使计数和前端可见

例如:

产品名称

可供选择的项目:10个

已预订的项目(但尚未付款):X

售出货品:Y

目前,woocommerce有一个显示每种产品的销售数量的功能,但它同时计算保留(待定状态)和已销售(已完成),因此它是不同类型的计数

我写了一个查询,应该可以找到与挂起状态匹配的订单(wp\u term\u relationships.term\u taxonomy\u id=46),但我不能只选择一个特定的产品,因为它统计数据库中所有挂起的订单。wp_posts.ID和wp_woocmerce_order_itemmeta.meta_value=250的产品ID相同

请注意,产品和订单在同一个表中:wp\u posts

我的问题是:

SELECT COUNT(DISTINCT wp_posts.ID) 
FROM wp_posts, wp_postmeta, wp_term_relationships, wp_woocommerce_order_itemmeta oi 

WHERE wp_posts.ID = wp_postmeta.post_id
AND wp_posts.post_status = 'publish'
AND wp_posts.ID = wp_postmeta.post_id 
AND oi.meta_key = '_product_id'
AND oi.meta_value = 250
AND wp_posts.post_type = 'shop_order'
AND wp_term_relationships.object_id = wp_posts.ID
AND wp_term_relationships.term_taxonomy_id = 46

你知道如何为这一款产品选择count吗?我觉得我只需要多一个文件管理器,但无法找出缺少了什么。提前感谢。

看看下面的内容,试一试。它可能需要一些调整 更新:

我找到了解决办法

正如我所怀疑的那样,我还需要再过滤一张表,这就完成了整个过程

因此缺少了一行:ii.order\u id=wp\u posts.id,以及其他一些调整;)

请确保不要选择“shop_order”post类型,因为它会给出错误的结果:),并且请注意,由于woocommerce对已完成、已删除、已支付和已取消的订单具有不同的状态值,因此完成状态可能没有更多的值

我希望这会对其他人有所帮助:)


非常感谢Kiril引导我找到这个解决方案!

您是否尝试根据产品id进行计数?
选择id,计数(*)从………..group by id
我尝试过,但仍然给出了错误的行计数,结果实际上是相同的,添加了带计数的列,但我不知道这里计数的是什么。我猜想元过滤器(键、值)有问题,但这些似乎是正确的,但不起作用,这很奇怪。只是编辑了您的答案并粘贴了您建议的查询。一个简单的问题,您是否在
wp_term_relationships
中有一个包含
ORDER id
信息的字段?我已经尽可能多地复制了您的示例,并且得到了正确的计数。您在wp\u term\u关系中,要计算
order\u id
而不是
productID
,有一个主键对象id,它也是wp\u帖子中的订单id,还有一个共享键术语分类id,它指示订单的当前状态。所有表都是默认的woocommerce和wordpress表,没有自定义表e clear:“order_id”实际上是wp_posts中的id键,同一个键表示产品和订单,它们只是不同的行(在我们的示例中,id=250是产品行),然后在where子句中使用
wp_posts.id=oi.meta_id
,并指定
Count(*)
     SELECT COUNT(*) 
   FROM wp_posts, wp_postmeta, wp_term_relationships, wp_woocommerce_order_itemmeta oi 

  WHERE wp_posts.ID = wp_postmeta.post_id
  AND wp_posts.post_status = 'publish'
  AND wp_posts.ID = wp_postmeta.post_id 
  AND wp_posts.ID= oi.meta_id
 AND oi.metakey = '_product_id'
 AND oi.metavalue = 250
 AND wp_posts.post_type = 'shop_order'
 AND wp_term_relationships.object_id = wp_posts.ID
 AND wp_term_relationships.term_taxonomy_id = 46
SELECT COUNT(DISTINCT wp_posts.ID) 

FROM wp_posts, wp_postmeta, wp_term_relationships, wp_woocommerce_order_itemmeta oi, wp_woocommerce_order_items ii 

WHERE wp_term_relationships.term_taxonomy_id = (xx - order status id) 
AND  wp_term_relationships.object_id = wp_posts.ID
AND oi.order_item_id = ii.order_item_id
AND oi.meta_key = '_product_id'
AND oi.meta_value = (yy - specific product id, the same id as in wp_posts)
AND ii.order_id = wp_posts.ID
AND wp_postmeta.post_id = wp_term_relationships.object_id
AND wp_posts.post_status = 'publish'