Мета-ключ: поля значений возвращают NULL - PullRequest
0 голосов
/ 30 марта 2019

У меня есть запрос, который вращается вокруг полей meta_key и meta_value в базе данных. Это почти там, но когда я добавил INNER JOIN wp_enrolments, 'class' и 'fee-types' теперь возвращают NULL. Это как будто конфликт с INNER JOIN wp_woocommerce_order_itemmeta line.

Структура wp_woocommerce_order_itemmeta равна

  • ID
  • meta_key
  • meta_value

Структура таблицы wp_enrolments:

  • ID
  • 1018 * Firstname *
  • фамилия

Буду признателен, если вы посмотрите на мой синтаксис и обнаружите ошибки.

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

1 Ответ

0 голосов
/ 31 марта 2019

Возможно, вам нужен 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...