Sven Rautenberg: MySQL Adressbuch mit zwei Anschriften

Beitrag lesen

Moin!

orte und orte sind der gleiche Name. das "= orte.plz" weiß nicht worauf es sich beziehen soll.
Schreib
SELECT * FROM adressen
LEFT JOIN orte o1 ON adressen.plzgew = o1.plz
LEFT JOIN orte o2 ON adressen.plzpriv = o2.plz

Dein Datenmodell ist leider fehlerhaft.

Du denkst, die Postleitzahl wäre einmalig und eindeutig, so dass du anhand der PLZ immer genau einen Ortsnamen bekommst.

Das ist FALSCH! Einunddieselbe PLZ kann durchaus zu MEHREREN Ortsnamen gehören, und es ist für die Postzustellung notwendig, dass man den Ort separat angibt.

Beispielsweise gehört die PLZ 26835 zu sechs Orten: http://www.plz-postleitzahl.de/land.niedersachsen/plz-26835.html

Dir bleibt nichts anderes übrig, als den Ortsnamen mit in deinen Datensatz zu speichern. Dann sparst du dir aber auch jeden Subrequest oder Join.

- Sven Rautenberg