Vinzenz Mai: JOIN-Bedingung versus WHERE-Klausel

Beitrag lesen

Hallo

kontakttyp
1 | telefon
2 | mobiltelefon
3 | email

person_kontakt
personid | kontaktid | wert
1        | 1         | 069...
1        | 2         | 0151...

"Finde alle Personen, für die kein EMail-Eintrag existiert"

Bei zwei Tabellen würde ich's mit einem LEFT OUTER JOIN von t_person_kontakt nach z.B. t_email e nebst WHERE e.email IS NULL machen (ist das eigentlich die einzige Möglichkeit?) aber wie ginge das eigentlich im obigen Fall?

Irgendwie geht's bestimmt, aber ich seh's grad nicht.

Ganz genauso :-) Mit einem LEFT OUTER JOIN:

SELECT  
    p.vorname,  
    p.nachname,  
    ...  
FROM  
    personen p  
LEFT OUTER JOIN  
    person_kontakt pk  
ON  
    p.personid = pk.personid  
AND  
    pk.kontaktid = 3  -- Betrachte nur E-Mail-Adressen  
WHERE  
    pk.wert IS NULL  

Wichtig ist, dass die Bedingung in der JOIN-Bedingung steht - und nicht etwa
in der WHERE-Klausel.

Freundliche Grüße

Vinzenz