SQL LEFT JOIN Псевдоним подзапроса
Я использую этот SQL-запрос:
SELECT wp_woocommerce_order_items.order_id As No_Commande
FROM wp_woocommerce_order_items
LEFT JOIN
(
SELECT meta_value As Prenom
FROM wp_postmeta
WHERE meta_key = '_shipping_first_name'
) AS a
ON wp_woocommerce_order_items.order_id = a.post_id
WHERE wp_woocommerce_order_items.order_id =2198
И я получаю эту ошибку:
# 1054 - Неизвестный столбец "a.post_id" в разделе "on".
Я думаю, что мой код довольно прост, но я не могу сделать все правильно. Что я делаю не так?
Ответы
Ответ 1
Вы не выбрали post_id
в подзапросе. Вы должны выбрать его в подзапросе следующим образом:
SELECT wp_woocommerce_order_items.order_id As No_Commande
FROM wp_woocommerce_order_items
LEFT JOIN
(
SELECT meta_value As Prenom, post_id -- <----- this
FROM wp_postmeta
WHERE meta_key = '_shipping_first_name'
) AS a
ON wp_woocommerce_order_items.order_id = a.post_id
WHERE wp_woocommerce_order_items.order_id =2198
Ответ 2
Я понимаю, что ответ работает и был принят, но есть намного более чистый способ написать этот запрос. Протестировано на mysql и postgres.
SELECT wpoi.order_id As No_Commande
FROM wp_woocommerce_order_items AS wpoi
LEFT JOIN wp_postmeta AS wpp ON wpoi.order_id = wpp.post_id
AND wpp.meta_key = '_shipping_first_name'
WHERE wpoi.order_id =2198