Подтвердить что ты не робот

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".

Я думаю, что мой код довольно прост, но я не могу сделать все правильно. Что я делаю не так?

4b9b3361

Ответ 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