thealex
Goto Top

Bestimmte Spalte einer MySQL-Tabelle bearbeiten

Hallo liebe Community,

Ich habe derzeit 3 MySQL-Tabellen die Postleitzahlen für Deutschland, Österreich und Schweiz enthalten. Nun möchte ich diese 3 Tabellen zusammenfügen, und bei der PLZ das Länderkürzel voranstellen.

Hat eventuell jemand eine Idee wie ich dies bewerkstelligen kann ohne jede spalte einzeln bearbeiten zu müssen.

Der Aufbau der Tabelle ist in dem Foto im Anhang zu sehen.


MfG

TheAlex
plz

Content-Key: 378180

Url: https://administrator.de/contentid/378180

Ausgedruckt am: 19.03.2024 um 10:03 Uhr

Mitglied: bloodstix
bloodstix 25.06.2018 aktualisiert um 15:23:19 Uhr
Goto Top
insert into postleitzahlen_ALLE select zc_id, zc_loc_id, concat('DE-',plz),ort, lat, lon FROM postleitzahlen_DE;  
insert into postleitzahlen_ALLE select zc_id, zc_loc_id, concat('AU-',plz),ort, lat, lon FROM postleitzahlen_AU;  
insert into postleitzahlen_ALLE select zc_id, zc_loc_id, concat('CH-',plz),ort, lat, lon FROM postleitzahlen_CH;  
So in etwa könnte es funktionieren.
Mitglied: SachsenHessi
SachsenHessi 25.06.2018 aktualisiert um 15:30:12 Uhr
Goto Top
Hallo,

also erster Tipp führe die LKZ (nach ISO2-Code) als ExtraSpalte, nicht als DE-08150 Musterhausen.
Ansonsten wen Du je eine Tabelle für DE/AT/CH hast führe die LKZ-Spalte in jeder Tabelle ein, (ein UPDATE ohne Where über alle Zeilen je Tabelle) und danach ein INSERT in eine neue Tabelle Mit einem UNION (https://www.1keydata.com/de/sql/sql-union.php) aus den drei einzelnen Tabellen. Also ein INSERT INTO .. SELECT.
(https://www.w3schools.com/sql/sql_insert_into_select.asp)
Eventuell das UNION als View und dann das INSERT über die View (dürfte übersichtlicher sein, als alles in ein Statement zu legen)

SH
Mitglied: bloodstix
bloodstix 25.06.2018 um 15:33:11 Uhr
Goto Top
@SachsenHessi nur fürs Protokoll: Nach Optimierungen hat er ja nicht gefragt. Deswegen habe ich erstmal ganz stupide genau das geantwortet, was er gefragt hat. *g*. Das quasi immer noch ne nummer sauberer geht, ist doch klar. face-smile
Mitglied: TheAlex
TheAlex 25.06.2018 um 15:38:38 Uhr
Goto Top
Okay das Problem is die zc_id, diese ist in jeder tabelle von 0 an fortlaufend, wie kann ich jetzt diese ID weiternummerieren lassen?
Mitglied: ukulele-7
ukulele-7 25.06.2018 um 15:55:37 Uhr
Goto Top
Ist das vielleicht eine auto increment Spalte? Dann läßt du die beim Insert einfach außen vor.
Mitglied: SachsenHessi
SachsenHessi 25.06.2018 um 15:56:34 Uhr
Goto Top
Tja, eine " Möglichkeit ist (den Index) anzupassen indem du beim INSERT mit einer mit einer neuen Spalte (mit AutoIncrement) arbeitest.
Diese dann zum Index erklarst die alte löschst und die neue Spalte umbennst. Dann hast du eine Spalte mit neuen, fortlaufenden Indizes und Autoincrement. Nicht schön, aber funktioniert ;)

SH
Mitglied: TheAlex
TheAlex 25.06.2018 aktualisiert um 16:17:42 Uhr
Goto Top
Ja ist eine AI spalte, aber wenn ich sie weglasse sagt er mir das sie Spaltenanzahl nicht identisch ist.

insert into geo_plz select zc_id, zc_loc_id, concat('CH-',plz),ort, lat, lon FROM plz_ch; <-- Alt

insert into geo_plz select zc_loc_id, concat('CH-',plz),ort, lat, lon FROM plz_ch; <--So versucht
Mitglied: bloodstix
Lösung bloodstix 25.06.2018 um 16:22:26 Uhr
Goto Top
Wenn du nur bestimmte Spalten der Zieltabelle befüllen willst, musst du das beim "INSERT INTO tabelle(spalten)" sagen:
INSERT INTO geo_plz(zc_loc_id, plz, ort, lat, lon) SELECT zc_loc_id, concat('DE-',plz),ort, lat, lon FROM plz_de;   
Mitglied: ukulele-7
ukulele-7 26.06.2018 um 08:53:42 Uhr
Goto Top
Zitat von @SachsenHessi:

Tja, eine " Möglichkeit ist (den Index) anzupassen indem du beim INSERT mit einer mit einer neuen Spalte (mit AutoIncrement) arbeitest.
Diese dann zum Index erklarst die alte löschst und die neue Spalte umbennst. Dann hast du eine Spalte mit neuen, fortlaufenden Indizes und Autoincrement. Nicht schön, aber funktioniert ;)

SH
Das ist kein Index sondern vermutlich der Primärschlüssel und den sollte man möglichst nicht einfach neu erstellen das wäre in vielen Fällen fatal, "fortlaufend" muss der auch nicht sein.
Mitglied: SachsenHessi
SachsenHessi 26.06.2018 um 12:10:17 Uhr
Goto Top
Na wenn es ein Primärschlüssel sein sollte, dann natürlich Vorsicht.
Dann genau schauen, ob evtl ein neuer primärschlüssel gesetzt werden kann/darf.
Aber da muss mann natürlich vorher eruieren, ob das eventl. was zerdöppert face-sad

SH