JOIN表wp_postmeta和wp_woocommerce_order_items

时间:2018-03-21 03:33:02

标签: mysql sql wordpress woocommerce orders

我是MySQL的新手,我仍然无法理解JOIN表格。

我正在制作在线商店,我需要生成订购商品的电子邮件报告以及产品中的一些自定义字段。

在我的数据库中,我的产品位于wp_posts,然后我在wp_postmeta中有自定义字段,现在我希望在wp_woocommerce_order_items表上看到它的关系。

有人能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:2)

第一步是加入wp_woocommerce_order_itemswp_woocommerce_order_itemsmeta表,因为元表包含与产品_product_id匹配的元键post_id

这样的事情应该有用(根据必要的字段进行编辑):

SELECT orders.order_item_name, orders.qty, locator.meta_value AS 'locator', stock.meta_value AS 'stock' 
FROM wp_postmeta locator

JOIN ( 
    SELECT items.order_item_name AS 'order_item_name', qty.meta_value AS 'qty',  product_id.id AS 'id' 
    FROM `wp_woocommerce_order_itemmeta` qty
    JOIN (
        SELECT order_item_id, meta_id, meta_key, meta_value AS 'id'     
        FROM `wp_woocommerce_order_itemmeta` 
        WHERE meta_key = '_product_id' 
        ) AS product_id
    ON qty.order_item_id = product_id.order_item_id
    JOIN `wp_woocommerce_order_items` items
    ON product_id.order_item_id = items.order_item_id
    WHERE qty.meta_key = '_qty'
    ) AS orders
ON locator.post_id = orders.id

JOIN (
    SELECT post_id, meta_key, meta_value
    FROM wp_postmeta
    WHERE meta_key = '_stock'
    ) AS stock
ON locator.post_id = stock.post_id

WHERE locator.meta_key = '_locator';