【问题标题】:Inner join on a meta_value fieldmeta_value 字段的内部联接
【发布时间】:2019-03-30 16:36:43
【问题描述】:

我想对 meta_value 字段进行内部联接。

在以下代码中,我需要将 'enrolment' 加入 'wp_woocommerce_order_itemmeta' (OIM) 表,其中 oim.meta_key='enrolment_id' 和 meta_value= 'enrolment' 表中的 id 字段。

wp_woocommerce_order_itemmeta 的结构是

  • 身份证
  • 元密钥
  • 元值

登记表的结构是:

  • 身份证
  • 名字

请注意,在我的示例中,我将 OIM 表字段从行转换为列。

这是我目前所拥有的:

SELECT 
  O.order_item_name,
  MAX(CASE WHEN OIM.meta_key = 'class' THEN OIM.meta_value END) AS 'class',
  MAX(CASE WHEN OIM.meta_key = 'fee-type' THEN OIM.meta_value END) AS 'fees',
  MAX(CASE WHEN OIM.meta_key = 'enrolment_id' THEN OIM.meta_value END) AS 'eid'
FROM wp_woocommerce_order_items O
INNER JOIN wp_woocommerce_order_itemmeta OIM ON O.order_item_id = OIM.order_item_id
INNER JOIN enrolment E ON ...

【问题讨论】:

  • 不幸的是 enrolment_id 是一个 meta_key 值而不是它自己的列

标签: mysql sql woocommerce entity-attribute-value


【解决方案1】:

ON 子句中包含元键。

...
INNER JOIN enrolment e
           ON e.id = oim.meta_value
              AND oim.meta_key = 'enrolment_id'
...

【讨论】:

  • 谢谢,它正在工作。唯一的问题是它使'class'和'fees'返回为NULL。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 2012-07-19
  • 2016-01-09
  • 2010-10-16
  • 2011-08-24
  • 2019-01-20
  • 2014-01-21
相关资源
最近更新 更多