【问题标题】:Woocomerce - getting subscription with sku and quantity for all userWoocommerce - 为所有用户获取 sku 和数量的订阅
【发布时间】:2021-09-23 04:33:14
【问题描述】:

我目前需要一个 sql,它可以为我获取用户当前的订阅。要识别它,我只需要产品的用户 ID、数量和 sku。我现在尝试了几天,但是数据库结构一团糟,我似乎无法找到正确的解决方案。

我目前的方法是,有两个视图,一个是他们购买的订单,一个是这个订单的数量。这些视图都加入了,但似乎缺少结果。

这是我的购买订单的 sql,任何人都可以提示我正确的方向吗?

Create view bought_orders as SELECT distinct products.sku,
                postmeta.meta_value        as user_id,
                #order_item_meta.meta_key, #as quantity,
               order_items.order_id
FROM wp_woocommerce_order_items as order_items

         LEFT JOIN
     wp_woocommerce_order_itemmeta as order_item_meta
     ON order_items.order_item_id = order_item_meta.order_item_id

         LEFT JOIN
     wp_posts AS posts
     ON order_items.order_id = posts.ID

         LEFT JOIN
     wp_postmeta AS postmeta
     ON posts.id = postmeta.post_id

         LEFT JOIN (
    SELECT id        AS product_id,
           post_name AS sku
    FROM wp_posts
    WHERE post_type = 'product'
) AS products ON products.product_id = order_item_meta.meta_value

WHERE posts.post_type = 'shop_subscription'
  AND posts.post_status = 'wc-active'
  AND order_items.order_item_type = 'line_item'
  AND order_item_meta.meta_key = '_product_id'
  AND postmeta.meta_key = '_customer_user';

【问题讨论】:

  • 你的SQL脚本有什么错误?
  • 想过这个吗?

标签: sql wordpress woocommerce woocommerce-subscriptions


【解决方案1】:

坦率地说,我是根据在其他地方找到的代码一起破解的,我确信它可以配对并且更高效,但它现在对我有用...

global $wpdb;

$total = $wpdb->get_var( "SELECT sum(subscription_line_items.qty)
        
    FROM {$wpdb->prefix}posts AS product 
    
    LEFT JOIN ( 
        SELECT wcoitems.order_id AS subscription_id, wcoimeta.meta_value AS product_id,
        wcoimeta.order_item_id, wcoimeta3.meta_value AS qty 
        FROM {$wpdb->prefix}woocommerce_order_items AS wcoitems 
        INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS wcoimeta 
        ON wcoimeta.order_item_id = wcoitems.order_item_id 
        INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS wcoimeta3 
        ON wcoimeta3.order_item_id = wcoitems.order_item_id 
        WHERE wcoitems.order_item_type = 'line_item' 
        AND wcoimeta.meta_key = '_product_id' 
        AND wcoimeta3.meta_key = '_qty' 
    ) AS subscription_line_items ON product.id = subscription_line_items.product_id 
    
    LEFT JOIN (
        SELECT DISTINCT({$wpdb->prefix}postmeta.post_id) AS wppm_id
        FROM {$wpdb->prefix}postmeta
    
    ) AS subscription_meta ON subscription_meta.wppm_id = subscription_line_items.subscription_id
    
    LEFT JOIN {$wpdb->prefix}posts AS subscriptions 
        ON subscriptions.ID = subscription_line_items.subscription_id 
    
    WHERE product.post_type = 'product' 
    AND subscriptions.post_type = 'shop_subscription' 
    AND subscriptions.post_status = 'wc-active'");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    相关资源
    最近更新 更多