元键:值字段返回NULL

问题描述 投票:0回答:1

我有一个查询,它围绕数据库中的meta_key和meta_value字段。它几乎就在那里但是当我添加INNER JOIN wp_enrolments时,'class'和'fee-types'现在返回NULL。这就像它与INNER JOIN wp_woocommerce_order_itemmeta一行冲突。

wp_woocommerce_order_itemmeta的结构是

  • ID
  • Metakiya
  • meta_value

wp_enrolments表的结构是:

  • ID
  • 名字
  • 等等

如果您能查看我的语法并发现任何错误,我将不胜感激。

SELECT 
  O.order_item_id, O.order_item_name,
  E.firstname,
  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'
FROM wp_woocommerce_order_items O
INNER JOIN wp_woocommerce_order_itemmeta OIM ON O.order_item_id = OIM.order_item_id
INNER JOIN wp_enrolments E ON E.id = OIM.meta_value AND OIM.meta_key = 'enrolment_id'
GROUP BY O.order_item_id
mysql sql
1个回答
0
投票

也许你需要一个LEFT JOIN。另外,修复GROUP BY以匹配SELECT,并且不要对列别名使用单引号:

SELECT O.order_item_id, O.order_item_name, E.firstname,
       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
FROM wp_woocommerce_order_items O JOIN
     wp_woocommerce_order_itemmeta OIM
     ON O.order_item_id = OIM.order_item_id LEFT JOIN
     wp_enrolments E
     ON E.id = OIM.meta_value AND
        OIM.meta_key = 'enrolment_id'
GROUP BY O.order_item_id, O.order_item_name, E.firstname;
© www.soinside.com 2019 - 2024. All rights reserved.