SQL LEFT JOIN subquery Alias

Uruchamiam to zapytanie 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

I dostaję ten błąd:

#1054 - Nieznana kolumna 'a.post_id' w 'on clause'.

Myślę, że mój kod jest dość prosty, ale nie mogę go naprawić. Co robię źle?

Author: fragilewindows, 2013-05-27

2 answers

Nie wybrałeś post_id w zapytaniu podrzędnym. Musisz wybrać go w zapytaniu podrzędnym w następujący sposób:

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 
 87
Author: Mahmoud Gamal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-27 15:22:37

Zdaję sobie sprawę, że odpowiedź działa i została zaakceptowana, ale jest dużo czystszy sposób, aby napisać to zapytanie. Testowane na mysql i 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 
 16
Author: EJay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-29 20:52:42