Andreas: Tabelle mit PLZ und zugeordneten Bundesländern

Hallo zusammen!
Kennt jemand eine Tabelle(zum downloaden), in der möglichst allen PLZ das entsprechende Bundesland zugeordnet ist?
Vielen Dank!

Viele Grüße,

Andreas

  1. Kennt jemand eine Tabelle(zum downloaden), in der möglichst allen PLZ das entsprechende Bundesland zugeordnet ist?

    Ich habe leider kein's hier, aber wirf' mal ein Blick in das Fünf-ist-Trümpf-Postleitzahlenbuch, da ist eine große Deutschlandkarte drin. Die Zahlen sind nach Leitregionen geordnet, die unter Umständen mit den Bundesländergrenzen weit übereinstimmen dürften. Ich denke mal, mit den ersten beiden Ziffern sollte das möglich sein.

    Ansonsten: Die Post bietet Datenträger an, in den Tabellen könnte das Bundesland den Zahlen auch direkt oder indirekt zugeordnet sein.

    Gruß,
      soenk.e

    1. Hi!

      Ich habe leider kein's hier, aber wirf' mal ein Blick in das Fünf-ist-Trümpf-Postleitzahlenbuch, da ist eine große Deutschlandkarte drin.

      was ist das - bzw. wo gibts das und was kostet das :-)?

      Ich hab mal ein wenige weitergeforscht und bin auf 2 evtl hilfreiche Links gestoßen:
      Deutschlandkarte, einmal PLZ, einmal Länder:
      http://www.uni-mainz.de/~lackmann/plz_bundeslaender/plz_bundeslaender.htm

      Eine fertige Aufschlüsselung, weiß nur nicht ob komplett bzw. 100% korrekt:
      http://www.genealogienetz.de/vereine/AMF/leistungen/d3-2_forscherkontakte.html#Anlage_3

      Bei, ersten Link habe ich das Problem, das die Grenzen nicht übereinstimmen, und ich das alles selber nachgucken muß, und noch nichtmal genau weiß wo, z.B. Niedersachsen + Bremen.... getrennt sind.

      Das 2. - da gehe ich jetzt mal von aus das es korrekt ist, hab ein paar Stichproben gemacht, naja :-)
      Wußte gar nicht, das die Postleitzahlen teilweise in 2 Bundesländern existieren, ganz schön dumm, aber sind ja nur ausnahmen, die wahrscheinlich niemals eingegeben werden, aber trotzdem muß ich mir da was einfallen lassen!

      Was ich jetzt brauche, ich muß automatisch anhand einer vorhandene  PLZ das Bundesland ermitteln können. Ich bin mir nicht sicher, ob(und wie!!!) ich das jetzt in eine Mysql Tabelle fassen soll, oder ob ich daraus einfach ein wohl recht komplexes "if ($PLZ > 123...) if, if..."-Gebilde machen soll.

      Was würdest Du machen?

      Grüße
      Andreas

      1. Hallo nochmal.
        Das eigentliche problem stellt gleub ich nicht die Ermittlung des Bundeslandes anhand der PLZ dar, das schaffe ich schon mit ner netten Funktion und den besagten Ifs, sollte so recht flott sein. Aber was ich noch brauche:

        Ich habe eine Tabelle mit Adressen, unter anderem mit PLZ, aber ohne Bundesland. Und jetzt will ich aus der Tabelle(Mysql) per SQL Select alle Datensätze abfragen, deren PLZ bspw. in Sachsen liegt. Jetzt habe ich die Daten zu Sachsen wie folgt vorliegen(nicht vollständig und korrekt, Excel hat da wieder zu viel korrigiert, geht jetzt aber ums Prinzip!):

        01067 - 01936 SN
        2         SN
        8         SN
        9         SN
        04639         SN
        04103 - 04579 SN
        04643 - 04889 SN

        SELECT FROM adressen WHERE plz>=01067 AND plz<=01936 OR plz>=20000 AND plz<=29999.....

        Da fehlt aber noch ne Menge, das wird also ne Mammut Abfrage. Was ist davon zu halten? Sollte ich evtl 6 SQL-Abfragen "fertig" machen, denn dynamisch dürfte das nicht einfach sein, oder?

        Bin etwas ratlos. Die Tabelle für alle Bundesländer hat nämlich 220 Zeilen wie oben, also würden das 16 wirklich komplexe Abfragen!

        Dachte da auch an was mit einem Array, das ich die Zahelen alle in einen Array schreibe, aber wie soll ich das dann aus der DB abfragen? Jedesmal mit 500 ORs?

        Wie würdet ihr das machen?

        Jedenfalls vielen Dank im voraus!

        Grüße
        Andreas

        1. Hallo Andreas,

          Das eigentliche problem stellt gleub ich nicht die Ermittlung des Bundeslandes anhand der PLZ dar, das schaffe ich schon mit ner netten Funktion und den besagten Ifs, sollte so recht flott sein. Aber was ich noch brauche:

          Ich habe eine Tabelle mit Adressen, unter anderem mit PLZ, aber ohne Bundesland. Und jetzt will ich aus der Tabelle(Mysql) per SQL Select alle Datensätze abfragen, deren PLZ bspw. in Sachsen liegt. Jetzt habe ich die Daten zu Sachsen wie folgt vorliegen(nicht vollständig und korrekt, Excel hat da wieder zu viel korrigiert, geht jetzt aber ums Prinzip!):

          01067 - 01936 SN
          2         SN
          8         SN
          9         SN
          04639         SN
          04103 - 04579 SN
          04643 - 04889 SN

          SELECT FROM adressen WHERE plz>=01067 AND plz<=01936 OR plz>=20000 AND plz<=29999.....

          Da fehlt aber noch ne Menge, das wird also ne Mammut Abfrage. Was ist davon zu halten? Sollte ich evtl 6 SQL-Abfragen "fertig" machen, denn dynamisch dürfte das nicht einfach sein, oder?

          Bin etwas ratlos. Die Tabelle für alle Bundesländer hat nämlich 220 Zeilen wie oben, also würden das 16 wirklich komplexe Abfragen!

          Dachte da auch an was mit einem Array, das ich die Zahelen alle in einen Array schreibe, aber wie soll ich das dann aus der DB abfragen? Jedesmal mit 500 ORs?

          Wie würdet ihr das machen?

          Weisst jetzt nicht ob ich Dich richtig verstanden hab.
          Du hast eine Tabelle mit den Adressen (name, stasse, plz, ort, ...) und eine Tabelle mit den Postleitzahlen (plz, bundesland, ...)
          Dann bekommst Du alle Adressen aus Sachsen im Prinzip so (habs mir nur mal so überlegt, noch nicht ausprobiert)

          select name, strasse, plz, ort from adressen where plz in (select plz from postleitzahl where bundesland='sn')

          Hoffe, das hilft Dir weiter

          viele Grüsse
          Kerstin

          1. Hi!

            Weisst jetzt nicht ob ich Dich richtig verstanden hab.
            Du hast eine Tabelle mit den Adressen (name, stasse, plz, ort, ...) und eine Tabelle mit den Postleitzahlen (plz, bundesland, ...)

            genau

            Dann bekommst Du alle Adressen aus Sachsen im Prinzip so (habs mir nur mal so überlegt, noch nicht ausprobiert)

            select name, strasse, plz, ort from adressen where plz in (select plz from postleitzahl where bundesland='sn')

            Soweit ich weiß funktionieren Subselects in Mysql nicht, oder? Hatte ich vergessen zu erwähnen das ich mysql benutze? naja. Aber auch wenn das ginge, das problem bleibt, das ich ja keine Tabelle habe, in der alle PLZ aufgelistet sind, sondern das genannte Format haben(01412-19728|SN). Wie soll das so funktionieren?

            Viele Grüße
            Andreas

            1. Hi!

              Dann bekommst Du alle Adressen aus Sachsen im Prinzip so (habs mir nur mal so überlegt, noch nicht ausprobiert)

              select name, strasse, plz, ort from adressen where plz in (select plz from postleitzahl where bundesland='sn')
              Soweit ich weiß funktionieren Subselects in Mysql nicht, oder?

              Ja ich glaub auch, aber mit entsprechenden Joins müsstest Du es auch hinkriegen...

              Aber auch wenn das ginge, das problem bleibt, das ich ja keine Tabelle habe, in der alle PLZ aufgelistet sind, sondern das genannte Format haben(01412-19728|SN). Wie soll das so funktionieren?

              hm, vielleicht geht es irgendwie so (weiss jetzt aber auch nicht genau wie das bei mysql aussieht)

              ... where plz between substr(plz,0,4) and subtr(plz,6,10) ...

              viele Grüsse
              Kerstin

            2. um das Problem besser zu verstehen, kurz nochmal die Datenquelle angucken: http://www.genealogienetz.de/vereine/AMF/leistungen/d3-2_forscherkontakte.html#Anlage_3

              1. um das Problem besser zu verstehen, kurz nochmal die Datenquelle angucken: http://www.genealogienetz.de/vereine/AMF/leistungen/d3-2_forscherkontakte.html#Anlage_3

                Hi

                versuch doch noch ne bessere Tabelle zu finden, oder Dir aus der Tabelle ne "richtige" zu basteln. Denn so wirst Du nicht glücklich, und streng genommen hat die Tabelle mit relationalen Datenbanken nicht viel zu tun.

                viele Grüsse
                Kerstin

                1. Hallo!

                  versuch doch noch ne bessere Tabelle zu finden, oder Dir aus der Tabelle ne "richtige" zu basteln. Denn so wirst Du nicht glücklich, und streng genommen hat die Tabelle mit relationalen Datenbanken nicht viel zu tun.

                  jaja, das ist klar, ist das einzig bracuhbare, was ich gefunden habe. Dies Post-CD, kommt man da auch direkt an die Daten? Weiß das jemand? http://www.deutschepost.de/postdirekt/index.html?inhalt=/postdirekt/produkte/plzinfo.html

                  Grüße
                  Andreas

                  1. Hallo Andreas

                    von der CD kann ich nur abraten. Die habe ich mal verwendet, um Orte mit PLZ den Bundesländern zuzuordnen, das war ein Krampf, habe am Ende mit einem Strassenatlas und einem PLZ-Kalender zusammengepuzzelt. Die ist ihr Geld nicht wert.

                    Gruß Frank

                    1. Hi Frank!
                      hast Du denn noch ne andere Idee, wie ich an die Zuordnung Bundesland -> PLZ komme?
                      Grüße
                      Andreas

                      1. Hallo,

                        hast Du denn noch ne andere Idee, wie ich an die Zuordnung Bundesland -> PLZ komme?

                        zur Not kannst Du Dir die Tabelle auch selber aus der anderen zusammenbasteln.

                        Wenn da z.B. steht 70 BW

                        dann machst Du

                        for($i=70000; $i<71000; $i++)
                         insert into postleitzahl (plz, bundesland) values ($i,'BW')

                        is jetzt natürlich kein richtiger PHP-Code, nur vom Prinzip her

                        Dann nimmst Du Dir ne Tabelle mit allen Postleitzahlen (ist bestimmt leichter zu finden)
                        und schmeisst die Postleitzahlen, die es gar nicht gibt aus deiner neuen Tabelle raus.

                        Ist halt auch ne Fummelei und eher ne Notlösung falls Du nix besseres findest.

                        viele Grüsse
                        Kerstin

      2. Ich habe leider kein's hier, aber wirf' mal ein Blick in das Fünf-ist-Trümpf-Postleitzahlenbuch, da ist eine große Deutschlandkarte drin.
        was ist das - bzw. wo gibts das und was kostet das :-)?

        Das ist das dicke, gelbe Postleitzahlenbuch, daß seinerzeit (bei der Umstellung vierstellige West-/Ost-PLZ -> fünfstellige PLZ) jeder Haushalt hierzulande kostenlos bekommen hat.

        Aber Deiner Beschreibung nach scheint meine Theorie doch nicht so ganz zu stimmen. Wie der Zufall es so will, ist vorhin netterweise eine weitere Postleitzahlenfrage hier im Forum aufgetaucht (<?m=71608&t=12951>). Setz' Dich doch mal mit dem Verfasser in Verbindung, der hat nämlich schon eine Postleitzahlendatenbank von der Post und kann Dir da sicher besser und treffsicherer weiterhelfen.

        Gruß,
          soenk.e

  2. Hi,

    das scheint ja heute der Tag der Post zu sein.

    Ich hatte einen ähnlichen Thead weiter oben eröffnet, wollte aber dort eigentlich nicht so ins Detail gehen.
    Andreas (der Eröffner diese Threads) hat mich per Mail gebeten, mein Problem genauer zu schildern.
    Das möchte ich aber lieber hier als per Mailantwort tun, vielleicht gibts hier ja doch noch eine(n) Postler(-in) ;-).

    Mein Problem geht in eine etwas andere Richtung.
    Der LEITCODE, den ich für den Postversand erzeugen will, wird als Barcode auf das Paket geklebt und informiert dann die automatischen Sortieranlagen in den Frachtpostzentren darüber, in welches Zustellfrachtpostzentrum das Paket transportiert werden muss.

    Ob die Grenzen der Zustelligkeitsbereiche dieser Zustellbasen nicht auch manchmal durch eine Bundeslandgrenze gehen weiß ich nicht.
    Wenn's so wäre, könntest du den leitcode für die Länderzuordnung vergessen.

    Außerdem ist die Extraktion des Leitcode aus dem Post Rohdaten ziemlich aufwendig.
    Man muß z.B. in einer ca. 1,4 Mio. Einträge umfassenden Straßendatenbank einen Straßencode suchen der dann ein Teil des leitcode wird.
    Das ist nur ein einfaches Select, braucht aber auf meinem PC (PIII 650MHz, 512MB, Win98, MySQL) ca. 7 sec.
    Da die Schreibweise der Straßen oft verschieden/abgekürzt/fasch geschrieben (und das fasch geschriebene falsch abgekürzt usw.) ist, muss man bei keinem bzw. keinem eindeutigem Ergebnis noch mal (mit modifiziertem Straßennamen) abfragen.
    Und das dauert dann...

    Die Sache soll die Sendungen, die in einem Online Shop bestellt werden, leitcodieren.
    Das macht normalerweise die Post, wenn man's selbst macht bekommt man aber Rabatt aufs Porto und ich wollte die Sache eigentlich gleich ins Shop Programm integrieren.

    Dann hätte ich gleich eine Art Adressen-Prüfung und würde Fake Bestellungen erschweren und bei wirklich versehentlichen Tippfehlern in PLZ oder Straßennamen gleich nachhaken können.

    Also, Falls jemand schon einmal so was gemacht hat, wären WIR dankbar für ein paar Anregungen.

    Viele Grüße aus Mülsen

    Rol

    P.S. Adreas, du hast Post;-)

    1. Hi!
      Poste doch mal die SQL-Abfrage, die solange bracht, auch bei 1,4 mio DS, kommt mir dann doch ein wenig lang vor! Vielleicht müßte man auch die Tabelle auf das wichtigste beschränken, oder aufteilen/verknüpfen? Ich bin da zwar kein Fachmann wie einige andere hier im Forum, aber ich denke bei sowas lohnt sich eine Optinmierung der Abfrage oder Datenstruktur, soweit das möglich ist! Hast Du die Tabelle so kpl. bekommen, oder selbst gestrickt?
      Grüße
      Andreas