簡體   English   中英

(mysql)通過meta_key和product_id獲取woocommerce訂單

[英](mysql) Get woocommerce Order by meta_key and product_id

我有一個mysql問題。

我有這個選擇

SELECT DISTINCT t2.meta_key,t2.meta_value
FROM wp_woocommerce_order_items AS t1
JOIN wp_woocommerce_order_itemmeta AS t2 ON t1.order_item_id = t2.order_item_id
JOIN wp_posts as t3 ON t3.ID=t1.order_id
WHERE t2.order_item_id IN(SELECT distinct t1.order_item_id FROM wp_woocommerce_order_items AS t1
JOIN wp_woocommerce_order_itemmeta AS t2 ON t1.order_item_id = t2.order_item_id WHERE t2.meta_key like "_product_id" AND t2.meta_value = 99) AND t2.meta_key="member_id" AND t3.post_status like "publish"

此“選擇”查詢獲取所有“ member_id”(meta_key),其中“ _product_id”等於99。

我獲得了很好的成績。 它可能不是“優雅”的,但確實有效。

我現在的問題是,我需要獲取所有_product_id等於99且未取消訂單的member_id。

另外,我不知道“ order_status”在哪個表中,什么是真正的鍵。

所以,

謝謝您的幫助!

編輯

我添加了

JOIN wp_posts as t3 ON t3.ID=t1.order_id

WHERE t3.post_status = "publish"

我需要的當前值在表中:wp_term。

謝謝

好,我知道了。

該查詢采用所有“ meta_value”(此處:member_id)

  • 在所有訂單上
    • 訂單狀態不是:“失敗”,“已取消”或“已退款”
    • 訂單的產品ID為99
    • 凡未將訂單放入垃圾桶的地方。

所以:

SELECT t2.meta_value
FROM wp_woocommerce_order_items AS t1
JOIN wp_woocommerce_order_itemmeta AS t2 ON t1.order_item_id = t2.order_item_id
WHERE t2.order_item_id IN(SELECT DISTINCT oi.order_item_id
FROM wp_posts, wp_postmeta, wp_term_relationships tr,wp_term_taxonomy tt,
     wp_terms te, wp_woocommerce_order_itemmeta oi, wp_woocommerce_order_items ii 
WHERE tt.taxonomy like "shop_order_status"
AND te.term_id = tt.term_id
AND te.slug  NOT IN ('failed','cancelled','refunded')
AND tr.term_taxonomy_id = tt.term_taxonomy_id
AND oi.order_item_id = ii.order_item_id
AND oi.meta_key = '_product_id'
AND oi.meta_value = 99
AND ii.order_id = wp_posts.ID
AND wp_postmeta.post_id = tr.object_id
AND wp_posts.post_status = 'publish') AND t2.meta_key like "member_id"

希望對大家有所幫助。

如果您對此查詢有更多的優雅或更優化。

隨時告訴我們:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM