it-swarm.com.de

SQL LEFT JOIN-Unterabfrage-Alias

Ich führe diese SQL-Abfrage aus:

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

Und ich bekomme diesen Fehler:

# 1054 - Unbekannte Spalte 'a.post_id' in 'on-Klausel'.

Ich denke, mein Code ist ziemlich einfach, aber ich kann es nicht richtig machen. Was mache ich falsch?

68
CharleyXIV

Sie haben in der Unterabfrage nicht post_id Ausgewählt. Sie müssen es in der Unterabfrage wie folgt auswählen:

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 
111
Mahmoud Gamal

Ich erkenne, dass die Antwort funktioniert und akzeptiert wurde, aber es gibt eine viel sauberere Möglichkeit, diese Abfrage zu schreiben. Getestet auf MySQL und 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 
17
EJay