Псевдоним подзапроса 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.
Я думаю, что мой код довольно прост, но я не могу сделать это правильно. Что я делаю не так?
2 ответа:
вы не Выберите
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
Я признаю, что ответ работает и был принят, но есть гораздо более чистый способ написать этот запрос. Протестировано на 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