sql >> データベース >  >> RDS >> Mysql

WooCommerceで注文の詳細を含むクーポンを一覧表示します

    MySQLクエリの下に、注文に関連付けられているすべてのクーポンが一覧表示されます。

    SELECT pc.post_title AS coupon_name,
           pc.post_excerpt AS coupon_description,
           Max(CASE WHEN pmc.meta_key = 'discount_type'      AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS discount_type,
           Max(CASE WHEN pmc.meta_key = 'coupon_amount'      AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS coupon_amount,
           Max(CASE WHEN pmc.meta_key = 'product_ids'        AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS product_ids,
           Max(CASE WHEN pmc.meta_key = 'product_categories' AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS product_categories,
           Max(CASE WHEN pmc.meta_key = 'customer_email'     AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS customer_email,
           Max(CASE WHEN pmc.meta_key = 'usage_limit'        AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS usage_limit,
           Max(CASE WHEN pmc.meta_key = 'usage_count'        AND  pc.`ID` = pmc.`post_id` THEN pmc.`meta_value` END) AS total_usaged,
           po.ID AS order_id,
           MAX(CASE WHEN pmo.meta_key = '_billing_email'      AND po.ID = pmo.post_id THEN pmo.meta_value END) AS billing_email,
           MAX(CASE WHEN pmo.meta_key = '_billing_first_name' AND po.ID = pmo.post_id THEN pmo.meta_value END) AS billing_first_name,
           MAX(CASE WHEN pmo.meta_key = '_billing_last_name'  AND po.ID = pmo.post_id THEN pmo.meta_value END) AS billing_last_name,
           MAX(CASE WHEN pmo.meta_key = '_order_total'        AND po.ID = pmo.post_id THEN pmo.meta_value END) AS order_total
    FROM `wp_posts` AS pc
    INNER JOIN `wp_postmeta` AS pmc ON  pc.`ID` = pmc.`post_id`
    INNER JOIN `wp_woocommerce_order_items` AS woi ON pc.post_title = woi.order_item_name
        AND woi.order_item_type = 'coupon'
    INNER JOIN `wp_posts` AS po ON woi.order_id = po.ID
        AND po.post_type = 'shop_order'
        AND po.post_status IN ('wc-completed', 'wc-processing', 'wc-refunded') -- Added needed order status over here.
    INNER JOIN `wp_postmeta` AS pmo ON po.ID = pmo.post_id
    WHERE pc.post_type = 'shop_coupon'
    GROUP BY po.ID
    ORDER BY pc.ID DESC,
             po.ID DESC
    LIMIT 0, 10 -- modify it accordingly.
    

    これがお役に立てば幸いです!




    1. mysqlはクエリ結果を並べて結合します

    2. mysql_real_escape_string()とmysql_escape_string()はアプリのセキュリティに十分ですか?

    3. ユーザー'root'@'localhost'のアクセスが拒否されました(パスワード:YESを使用)(Mysql ::Error)

    4. 長距離に関連するテーブル間の関係を見つけるにはどうすればよいですか? MySQL