SQL Inner Join Frage

Hallo

ich habe 2 Tabellen : Adresse und PLZ.
wenn z.b. eine Abfrage mache wie folgt:

select A.strasse, P.plz from Adresse A
inner join t_plz P ON A.plzid = P.id

dann bekomme ich nur die Strassen zurück, die auch einen
Eintrag in der PLZ Tabelle haben - wie bekomme ich alle, selbst, wenn diese keine Einträge in der PLZ haben?
Geht das mit Left Join oder sowas?

Danke für Eure Hilfe!

Hallo Connie_,

genau das ist die Lösung. Wenn du left join nutzt werden alle Adressdatensätze ausgegeben, auch wenn keine PLZ dazu vorhanden ist. Die Felder der PLZ-Tabelle sind dann mit null gefüllt.

Viele Grüße
Alex

Hallo,
versuch mal bei
A.plzid = P.id
ein (+) anzuhängen.
Hier werden dann alle ausgegeben.
mfg Wolfgang

Hallo Connie,

richtig, ein Left Join hilft dir da weiter. Einfach das „inner“ durch „left“ ersetzen:

select A.strasse, P.plz from Adresse A
left join t_plz P ON A.plzid = P.id

Hallo

ich habe 2 Tabellen : Adresse und PLZ.
wenn z.b. eine Abfrage mache wie folgt:

select A.strasse, P.plz from Adresse A
inner join t_plz P ON A.plzid = P.id

dann bekomme ich nur die Strassen zurück, die auch einen
Eintrag in der PLZ Tabelle haben - wie bekomme ich alle,
selbst, wenn diese keine Einträge in der PLZ haben?
Geht das mit Left Join oder sowas?

Genau ! Wenn man statt „inner join“ den Ausdruck „left outer join“ verwendet, müssten im Ergebnis auch alle
Inhalte der „linken“ Tabelle (also hier: Adresse)
erscheinen, für die in t_plz kein korrespondierender
Eintrag existiert.

  1. Wieso erstellst Du jeweils eine Tabelle für die Adresse und die PLZ?

  2. Welche Felder enthalten diese Tabellen?

  3. Was ist das Ziel Deiner Abfrage?

danke für die vielen Antworten - es war nur eine reine Verständnisfrage - die Tabellen exisitieren nicht :smile:

Also wäre ein LEFT OUTER JOIN richtig?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Habe z.B 2 Tabellen zum Testen angelegt. eine Tabelle
ADRESSE, die unter anderem das Feld STRASSE enthält und
eine Tabelle PLZ, welche unter anderem plz_id und STRASSE
enthält. In der Tabelle ADRESSE sind Einträge mit
Strassennamen enthalten, die es in der PLZ nicht gibt.
Mit folgender Abfrage bekomme ich dennoch alle
Strasseneinträge aus der Tabelle ADRESSE angezeigt.

select a.strasse, b.plz_id from Adresse
as a left outer join plz as b on a.strasse=b.strasse

Die Syntax ist die für mysql. Bei anderen Datenbanken gibt
es da durchaus Abweichungen in der Syntax für einen JOIN.