Vinzenz Mai: Syntaxfehler

Beitrag lesen

Hallo Ingrid,

trotz Vorschau Syntaxfehler :-(

Zeige mir alle Kunden (Tabelle user), die keinen Newsletter wünschen und nichts gekauft haben (Tabelle order)

SELECT  
    u.last_name,  
    u.first_name,  
    u.email           -- da gehört kein Komma hin :-)  
FROM user u  
LEFT JOIN `order` o   -- order ist meiner Meinung nach ein schlechter  
                      -- Spaltenname, da ein [link:http://dev.mysql.com/doc/refman/4.1/en/reserved-words.html@title=reserviertes Wort].  
                      -- Ich persönlich vermeide lieber solche Namen.  
ON u.id = o.customer  
WHERE  
    u.newsletter = 0  -- kein Newsletter  
    AND o.customer [link:http://dev.mysql.com/doc/refman/4.1/en/comparison-operators.html#id3004919@title=IS NULL] -- kein Eintrag in der Tabelle order zu dieser Person  

geht mit jeder mir bekannten MySQL-Version, sogar 3.23. Die Subselect-Variante ist möglicherweise performanter (nutze dazu EXPLAIN):

SELECT  
    u.last_name,  
    u.first_name,  
    u.email            -- da auch nicht  
FROM user u  
LEFT JOIN `order` o  
ON u.id = o.customer  
WHERE  
    u.newsletter = 0  -- kein Newsletter  
    AND u.id NOT IN (SELECT o2.customer FROM `order` o2)  
        -- kein Eintrag in der Tabelle order zu dieser Person  

geht aber, wie bereits bemerkt, erst ab MySQL 4.1 [1].

Freundliche Grüße

Vinzenz