如何计算Woocommerce中具有待处理状态的产品的订单?

时间:2013-12-06 11:10:36

标签: sql wordpress woocommerce count orders

我正在尝试创建统计脚本,明确用于Woocommerce的产品预订,diplaying可用,保留和售出状态。状态订单在后端管理面板中可用,但我需要在前端进行计数和显示。

示例:

  

产品名称

     

可用物品:10

     

已保留的项目(但尚未付款):X

     

已售商品:Y

目前,woocommerce有一项功能,显示每件产品的销售数量,但它既包括保留(待定状态)又包括已售出(已完成),因此它的数量不同。

我写了一个查询,应该找到与待处理状态匹配的订单(wp_term_relationships.term_taxonomy_id = 46 ),但我不能只选择一个特定产品,因为它会计算数据库中的所有待处理订单。 wp_posts.ID和wp_woocommerce_order_itemmeta.meta_value = 250 的产品ID相同。

请注意,产品和订单位于同一个表格中: wp_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

如何选择只计算这一产品的任何想法?我觉得我只需要一个文件管理器,但无法弄清楚缺少什么。提前谢谢。

2 个答案:

答案 0 :(得分:0)

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

     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

答案 1 :(得分:0)

我找到了解决方案!

正如我怀疑我需要再过一个表来过滤,这就完成了整个过程!

所以缺少这一行: ii.order_id = wp_posts.ID ,以及其他一些调整;)

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'

请务必不要选择' shop_order"发布类型,因为它会给出错误的结果:)并注意,完整的状态可能只有更多的值,因为woocommerce有完成,删除,付费和取消订单的不同状态值。

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

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