solkar: 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  
  
;-)  
  
Ja, ok, person\_kontakt ist m:n zwischen person  
( die aber oben nicht steht!!! sach ich ma zu meiner Ehrenrettung ;)  )  
und kontakttyp.  
  
Ja, ok, ich hätte sehen müssen, dass personid kein PK sein kann..  
  
ja, ok, ich bin ja schon ruhig...  
  
;-)  
  
Danke und schönes WE!  
  
Solkar