【问题标题】:JOIN tables wp_postmeta and wp_woocommerce_order_items加入表 wp_postmeta 和 wp_woocommerce_order_items
【发布时间】:2018-08-30 01:30:57
【问题描述】:

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

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

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

谁能告诉我怎么做?

【问题讨论】:

  • 首先请展示wp_posts, wp_postmeta, wp_woocommerce_order_items的内容是我们无法想象的..
  • 基本上我需要获取这些:1. 来自 wp_postmeta 的两个元值(_locator、_stock)、项目名称和来自 order_itemmeta 的 _qty

标签: mysql sql wordpress woocommerce orders


【解决方案1】:

第一步是加入wp_woocommerce_order_itemswp_woocommerce_order_itemsmeta 表,因为元表包含与产品的post_id 匹配的元键_product_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';

【讨论】:

  • 这可能是最接近我的意图的。您如何更改此设置以便我能够返回具有特定列的行?
  • 我根据您关于需要 wp_postmeta (_locator, _stock)、项目名称和 _qty 的评论更新了 SQL 语句。
猜你喜欢
  • 2020-04-21
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2023-04-08
  • 2022-06-23
相关资源
最近更新 更多