mySQL und Joins

Hallo,

ich habe zwei Tabellen. In der einen stehen Stammdaten und in der anderen pro Stammtaden beliebig viele zuordnungen

Wie kann ich jetzt abfragen ob eine Zuordnung nicht vorhanden ist und alle Stammdaten ausgeben, die eben keine Zuordnung haben?
 
Hallo,

eventuell so:

SQL:
select st.* 
  from stammdaten st 
  left outer join zuordnungen  zu
  on (st.id = zu.st_id)
  where zu.st_id is null

Damit bekommst du die Stammdaten, für die keine Zuordnungen existieren.
Gibt natürlich noch andere Wege, aber ich denke als Anfang reicht er.

Markus
 
hm, ne so klappt das nicht. ich will die haben , die eine bestimmte zuordnung nicht haben. die Teile von mri sehen so aus

$subjoin .= " LEFT OUTER JOIN ".MODUL_PRODUKTKONTAKT." AS t5 ON t1.KDID = t5.KDID AND t5.PRODUKTKONTAKTID = '".$_POST['PRODUKTKONTAKTID']."' ";


$subwhere = " AND t5.PRODUKTKONTAKTID != '".$_POST['PRODUKTKONTAKTID']."' ";

damit erhalte ich aber immer die, die eine vernüpfung besitzen, aber eben nicht die, die eine bestimmte verknüpfung nicht besitzen
 
Hallo nochmal,

ok, das ist etwas anderes, als wenn sie gar keine Zuordnung haben, stimm ich überein.

Versuchs mal mit einer correlated subquery statt einem left outer join:

SQL:
select t1.* 
  from tabelle1 t1 
 where not exists 
  (select 1 
     from modul_produktkontakt t5 
    where t5.kdid   = t1.kdid 
      and t5.produktkontaktid = $_POST['PRODUKTKONTAKTID']);

Damit findest du definitiv die Datensätze aus Tabelle1, die keinen Detaildatensatz mit der entsprechenden ID besitzen (als auch die, die überhaupt noch keinen haben).

Markus
 
Zuletzt bearbeitet:
Zurück