Vinzenz Mai: MYSQL: Join

Beitrag lesen

Hallo Ben,

für Dein Problem gibt es mindestens zwei Lösungsansätze:

- mit einem OUTER JOIN (sollte mit jeder MySQL-Version gehen)
  - mit Subselects (erfordert MySQL 4.1.x oder neuer)

Table 1:

id |ca_id

1 |2
2 |2
3 |2
4 |3

Table 2:

old_id |ca_id

2 |2
7 |3

Ich möchte nun alle Einträge aus Table 1 haben, welche ca_id=2 haben und nicht in Table2 drin sind. Genauer:
In diesem Falle also die Einträge mit table1.id=1 und table1.id=3

Lösung mit OUTER JOIN:

1. Lass Dir alle Einträge aus Table 1 anzeigen mit der
   Entsprechung in Table 2, auch dann wenn es keine Entsprechung gibt:
   LEFT OUTER JOIN
2. Schränke die Zielmenge auf die von Dir gewünschten Datensätze ein,
   diese Datensätze haben in table2.ca_id den speziellen Wert NULL, auf
   den Du mit IS NULL prüfen kannst.

Zwei Lesetipps zu Joins:

Einführung Joins
Fortgeschrittene Joins

Freundliche Grüße

Vinzenz