[MySQL] je ein Insert pro bestimmter Spalte einer anderen Tabelle

para_noid

hirnrissig
Schon klar, der Titel ist bekloppt, aber ich kann's gerade nicht besser umschreiben.

Vorhanden ist eine Tabelle A die ungefähr so aussieht:

ID
Text1
Text2
Text3
Text4
Status

Des Weiteren Tabelle B:

ID
Text
Textart (ENUM('Text1','Text2','Text3','Text4'))
ForeignID

Ich suche jetzt nach einer Möglichkeit, für jeden Eintrag, der sich in den Spalten Text1 bis Text4 in Tabelle A befindet, ein Insert in Tabelle B zu machen, und dort auch festzulegen, von welcher Spalte der Text kam (Textart).

Kann mich da bitte jemand grob in die richtige Richtung schubsen? Ich weiß zwar wie ich ein Insert mit Select schreibe aber nicht, wie ich einzeln durch die 4 gewünschten Spalten durchgehen und zudem noch den Spaltenname speichern kann.
 
Mach doch einfach vier INSERT SELECT nacheinander.

EDIT:

SQL:
INSERT INTO b SELECT NULL, Text1, 'Text1', id FROM a;
INSERT INTO b SELECT NULL, Text2, 'Text2', id FROM a;
INSERT INTO b SELECT NULL, Text3, 'Text3', id FROM a;
INSERT INTO b SELECT NULL, Text4, 'Text4', id FROM a;
 
Zuletzt bearbeitet:
Äh ja. Klar, geht so. Was ich zu erwähnen vergaß, die neuen Einträge in Tabelle B werden später zwecks Volltextsuche abgerufen, also auch nach ForeignID sortiert. Die Datensätze sollten demnach möglichst "beieinander" sein, also pro Fremdschlüssel wenns geht und nicht erst alle mit Text1, dann alle mit Text2 usw.
 
Ich kann dir nicht folgen. Die Daten liegen unsortiert in der Datenbank.

Wenn auf ForeignID ein Index ist, ist doch alles geritzt.
 
Weiß auch nicht mehr wirklich wo mein Problem war (vielleicht weniger saufen). Hab's so wie vorgeschlagen gemacht und klappt natürlich.
 

Neue Beiträge

Zurück