Postleitzahlen-Tabelle kürzen oder filtern

JustMatt

Benutzer
Beiträge
6
Hallo zusammen,

ich bin dabei meine bestehende Datenbank zu verbessern.

Im ersten Schritt geht es um eine Tabelle die die Postleitzahlen und Orte in Deutschland enthält. Die Tabelle umfasst rund 47.000 Datensätze, wobei einige Orte mehrere Postleitzahlen haben und einige Postleitzahlen mehrere Orte betreffen.

Die Orte brauche ich um Transportverbindungen von Ort A nach Ort B in einer anderen Tabelle zu speichern.

Bisher habe ich in der Tabelle für die Transportverbindungen manuell die Orte eingetragen. Wie gesagt ich bin dabei die Datenbank zu verbessern
smile.png


Jetzt möchte ich gerne in dem Formular ein Auswahlfeld, in dem die Orte aus der Tabelle mit den Postleitzahlen und Orten erscheint. Wie löst man sowas am besten: filtert man die Orte mit mehreren Postleitzahlen oder kürzt die Tabelle entsprechend um die Duplikate?

Nehmen wir mal als Beispiel eine Transportverbindung von München bis Hong Kong. Wenn ich jetzt nach München suche würden mir 470 Datensätze angezeigt werden, die München enthalten. Wobei es ein München mit der Postleitzahl 04938 gibt dann viele mit 80xxx, 81xxx und ein München mit 99438.

Für meine Anwendung wäre es wichtig zu wissen ob es sich um das München im 80er und vielleicht noch 81er oder aber 04er oder 99er Postleitzahlgebiet handelt.

Wir würdet Ihr das angehen?

Viele Grüße

Matthias
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Also München ist ja schonmal ein extremes Beispiel. In vielen Fällen dürfte das Problem auftreten, das der Ort dem Anwender weniger bekannt ist und es einen gleichnahmigen Ort x mal in DE oder sogar auf der Welt gibt. Daher empfiehlt es sich vieleicht, auch Land / Bundesland oder dergleichen mit anzuzeigen. Irgendwelche Duplikate löschen wird nicht die Lösung sein, die sind ja aus einem bestimmten Grund da... Die Anzeige könntest du mit SELECT DISTINCT * FROM tabelle verhindern.
 

JustMatt

Benutzer
Beiträge
6
Danke Ukulele! Ich hab's jetzt gerade mit SELECT DESTINCT probiert:


Code:
SELECT DISTINCT Mid(tblBeispielPLZ.Postleitzahl,1,2) AS Ausdr1, tblBeispielPLZ.Ort
FROM tblBeispielPLZ

Funktioniert tadellos und es werden keine doppelten Postleitzahlen (in diesem Fall anhand der ersten beiden Stellen (Ausdr1)) mehr angezeigt.

Was ich jetzt allerdings nicht kapiere ist wenn ich dann später ein Formular bastel, woher weiß das DBMS (in meinem Fall Access) dann, welcher Ort gemeint ist, denn es wird ja keine ID mit übergeben.



Code:
SELECT DISTINCT Mid(tblBeispielPLZ.Postleitzahl,1,2) AS Ausdr1, tblBeispielPLZ.Ort, tblBeispielPLZ.ID
FROM tblBeispielPLZ

Hänge ich wie in diesem Beispiel die Spalte tblBeispielPLZ.ID mit dran, dann werden auch die doppelten Postleitzahlen wieder mit angezeigt.
 

ukulele

Datenbank-Guru
Beiträge
4.394
Das ist natürlich korrekt, DISTINCT nützt dir nur etwas, wenn du die PLZ selbst auswählen / einfügen willst. Willst du mehr Informationen, also Ort anhängen und die PLZ ist nicht immer eindeutig muss es einen eindeutigen Schlüssel geben. Sobald dieser vorhanden ist liefert dir DISTINCT auch alle Einträge zurück :)

Die Frage ist eher, warum ist es ein Problem das PLZ mehrfach vorkommen können? Es ist ja nichts unübliches, das große Städte mehrere PLZ haben.
 

Charly

Datenbank-Guru
Beiträge
306
Hallo JustMat,

wenn Du schon am Optimiren bist solltest Du PLZ und Ort auf 2 Tabellen verteilen und mit einer Hilfstabele verbinden (N:M-Beziehung).
Wenn Du die Fremdschlüsselspalten der Hilfstabelle noch zum Primärschlüssel machst verhinderst Du damit auch noch doppelte Kombinationen aus Ort und PLZ.

Gruß Charly
 

JustMatt

Benutzer
Beiträge
6
Hallo Ukulele/Charly,

danke für Eure Tipps. Tja irgendwie sehe ich im Moment den Wald vor lauter Bäumen nicht ehrlich gesagt. Werde mich da am Wochenende mal dran setzen und weiter rumtüfteln.

Die Idee mit der Hilfstabelle klingt interessant. Was mache ich aber bei den Orten im Ausland. Da habe ich meistens keine PLZ, bzw. es wird von meiner Seite auch keine benötigt - da lasse ich dann das Feld einfach leer offensichtlich ...

Da hab ich mir ja was vorgenommen ... ich liebe zwar den relationalen Gedanken, aber ich stoße gedanklich doch immer häufiger an meine Grenzen beim Entwurf *seufz*

Gruß

JustMatt
 

Charly

Datenbank-Guru
Beiträge
306
Ja genau. Wenn es einen Ort ohne PLZ gibt steht auch nichts in der Hilfstabelle.

Da hab ich mir ja was vorgenommen ... ich liebe zwar den relationalen Gedanken, aber ich stoße gedanklich doch immer häufiger an meine Grenzen beim Entwurf *seufz*

Nur nicht verzweifeln. Bei Designproblemen einfach fragen.

Gruß Charly
 
Werbung:
Oben