2016-06-09 10 views
0

Ich möchte Werte von einer Tabelle in eine andere mit mysql kopieren, während ich eine dritte Tabelle durchlaufe, um einen bestimmten Wert in der zweite.mysql kopiert Datenbankzeilen von Datenbank 1 mehrmals in neue Datenbank 2, durchläuft einen Datenbankwert 3

Tabelle 1 Länder genannt, mit Struktur und Daten:

 
countries 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+ countries_id + countries_name + countries_iso_code_2 + countries_iso_code_3 + 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+ 1   + Belgium  + BE     + BEL     + 
+ 2   + Netherlands + NL     + NLD     + 
+ 3   + Germany  + DE     + DEU     + 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

Die Reihen countries_id und countries_name müssen Tabelle countries_name kopiert werden. Für jede Sprache aus Tabellensprachen. Tabelle 2

 
countries_name 
+++++++++++++++++++++++++++++++++++++++++++++++ 
+ countries_id + language_id + countries_name + 
+++++++++++++++++++++++++++++++++++++++++++++++ 
+ 1   + 1   + Belgium  + 
+ 2   + 1   + Netherlands + 
+ 3   + 1   + Germany  + 
+ 1   + 3   + Belgium  + 
+ 2   + 3   + Netherlands + 
+ 3   + 3   + Germany  + 
+ 1   + 4   + Belgium  + 
+ 2   + 4   + Netherlands + 
+ 3   + 4   + Germany  + 
+++++++++++++++++++++++++++++++++++++++++++++++ 

Tabelle 3

 
languages 
+++++++++++++++++++++++++++++++++ 
+ languages_id + name + code + 
+++++++++++++++++++++++++++++++++ 
+ 1   + English + en + 
+ 3   + Dutch + nl + 
+ 4   + German + de + 
+++++++++++++++++++++++++++++++++ 

Ich weiß, wie dies für einen einzigen Durchgang zu tun, aber nicht für mehrere.

CREATE TABLE countries_name (

countries_id int(11) NOT NULL,

language_id int(11) NOT NULL DEFAULT 1,

countries_name varchar(64) NOT NULL,

UNIQUE countries (countries_id, language_id),

KEY idx_countries_name_zen (countries_name)

) ENGINE=MyISAM;

INSERT INTO countries_name (countries_id, countries_name)

SELECT c.countries_id, c.countries_name

FROM countries c;

+0

so, p Lassen Sie Ihren Code wie Sie das für einen einzigen Durchlauf tun? – Alex

+0

Code für Single-Pass hinzugefügt – Zen4All

Antwort

0

http://sqlfiddle.com/#!9/bd3c7/1

Wenn ich Ihr Ziel richtig bekam:

INSERT INTO countries_name (countries_id, language_id, countries_name) 
SELECT 
c.countries_id, 
l.languages_id, 
c.countries_name 
FROM countries c 
LEFT JOIN languages l 
ON 1; 
+0

Danke, aber das ist nur für die erste Sprache, jetzt muss die Abfrage durchlaufen die restlichen Sprachen, und kopieren Sie die Namen wieder mit der anderen Sprache id – Zen4All

+0

??? Worüber redest du? Hast du diese Abfrage versucht? – Alex

+0

Natürlich habe ich :) Die Abfrage kopiert nur das Set einmal, nur für language_id 1, und nicht für 3 und 4 – Zen4All