Rouven: unkorrekte SQL Abfrage: Newbie sucht Hilfe

Beitrag lesen

Hello,

wie in so vielen Fällen hängt vieles von der genauen Version der dir zur Verfügung stehenden Software ab. Die aus meiner Sicht intuitivste Variante einer Abfrage sieht wie folgt aus:

  
SELECT last_name, first_name, email  
FROM user                              -- gib mir alle Nutzer  
WHERE id NOT IN (                      -- die NICHT unter den Käufern sind  
   SELECT customer FROM order  
)  
AND newsletter = 0                     -- und keinen Newsletter wünschen  

Nun ist es allerdings so, dass insbesondere ältere MySQL-Datenbanken diese Syntax verweigern, in diesem Fall muss man in der Tat auf Joins ausweichen. Um zu verstehen, was du geschrieben hast und welche Wirkung das hat, solltest du dir erstmal die Joins genauer ansehen - SELFHTML hat eine eigene Sektion mit Artikeln zum Thema Datenbanken.
Wir brauchen also einen JOIN der uns gestattet passende Datensätze rauszufiltern, also in etwa so:

  
SELECT user.last_name, user.first_name, user.email, order.customer AS filterkriterium  
FROM user LEFT JOIN order  
ON user.id = order.customer  
WHERE filterkriterium IS NULL    -- es wurde keine Übereinstimmung gefunden  
AND user.newsletter = 0          -- er wünscht keinen Newsletter  

MfG
Rouven

--
-------------------
Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"