1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Postleitzahlen-Tabelle kürzen oder filtern

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von JustMatt, 9 April 2011.

  1. JustMatt

    JustMatt Benutzer

    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 [​IMG]

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    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.
     
  3. JustMatt

    JustMatt Benutzer

    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.
     
  4. ukulele

    ukulele Datenbank-Guru

    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.
     
  5. Charly

    Charly Datenbank-Guru

    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
     
  6. JustMatt

    JustMatt Benutzer

    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
     
  7. Charly

    Charly Datenbank-Guru

    Ja genau. Wenn es einen Ort ohne PLZ gibt steht auch nichts in der Hilfstabelle.

    Nur nicht verzweifeln. Bei Designproblemen einfach fragen.

    Gruß Charly
     
  8. JustMatt

    JustMatt Benutzer

    Danke für die aufbauenden Worte. Jetzt gucke ich mal wie weit ich komme.

    Gruß

    JustMatt
     

Diese Seite empfehlen