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

Printed on: April 19, 2024 at 06:04 o'clock

Member: bloodstix
bloodstix Jun 25, 2018 updated at 13:23:19 (UTC)
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.
Member: SachsenHessi
SachsenHessi Jun 25, 2018 updated at 13:30:12 (UTC)
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
Member: bloodstix
bloodstix Jun 25, 2018 at 13:33:11 (UTC)
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
Member: TheAlex
TheAlex Jun 25, 2018 at 13:38:38 (UTC)
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?
Member: ukulele-7
ukulele-7 Jun 25, 2018 at 13:55:37 (UTC)
Goto Top
Ist das vielleicht eine auto increment Spalte? Dann läßt du die beim Insert einfach außen vor.
Member: SachsenHessi
SachsenHessi Jun 25, 2018 at 13:56:34 (UTC)
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
Member: TheAlex
TheAlex Jun 25, 2018 updated at 14:17:42 (UTC)
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
Member: bloodstix
Solution bloodstix Jun 25, 2018 at 14:22:26 (UTC)
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;   
Member: ukulele-7
ukulele-7 Jun 26, 2018 at 06:53:42 (UTC)
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.
Member: SachsenHessi
SachsenHessi Jun 26, 2018 at 10:10:17 (UTC)
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