Gerald: MySQL Abfrage will nicht so wie ich, wer weiss Rat?

Hallo!

Ich stehe mit einer SQL auf dem Schlauch, wäre super, wenn mir hier jemand weiterhelfen könnte.

Folgende SQL ist die Basis (und funktioniert soweit)

SELECT

user.company,
 user.last_name,
 user.first_name,
 user.email,
 user.city

FROM

user

WHERE

user.customer = 1
 AND user.newsletter = 0
 AND user.last <= '2007-01-10'

Was sie tut: es werden alle Kunden ausgegeben, die keinen Newsletter wollen und nicht mehr nach dem 01.10. auf unserer Seite waren.

Nun möchte ich dies erweitern, es sollen auch die Kunden rausgefiltert werden, die zwischenzeitlich was gekauft haben, das steht in Tabelle "sold".

Die entsprechenden Käufe bekäme ich so:

SELECT

sold.*

FROM

sold

WHERE

sold.create >= '2007-01-10'

So, nun will ich das natürlich verbinden und dachte an etwas wie:

SELECT

user.company,
 user.last_name,
 user.first_name,
 user.email,
 user.city

FROM

user,
 sold

WHERE

user.customer = 1
 AND user.newsletter = 0
 AND user.last <= '2007-01-10'
 AND user.id != sold.userID
 AND sold.create >= '2007-01-10'

Nun könnt Ihr Euch denken, was passiert... statt ca 500 Ergebnissen bekomme ich nun über 800.000, mit extrem vielen Dopplungen, ganz als würde jeder der AND Bedingungen für sich auch schon gelten.
Kann mir ein SQL Fuchs hier kurz Rat geben?

Danke,
Gerald

  1. yo,

    SELECT user.company, user.last_name, user.first_name, user.email, user.city
    FROM user
    WHERE user.customer = 1
    AND   user.newsletter = 0
    AND   user.last <= '2007-01-10'
    UNION
    SELECT user.company, user.last_name, user.first_name, user.email, user.city
    FROM user
    INNER JOIN sold ON user.id = sold.userID
    AND sold.create >= '2007-01-10'

    Ilja