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"
-------------------
Let Bygones Be Bygones -- Robert Pitscottie: "Chronicles of Scotland"