Joopi
[MySQL] Daten aus Tabelle in eine andere Tabelle erfassen - Druckversion

+- Joopi (https://forum.hermann-splitthoff.de)
+-- Forum: Wissenswertes (https://forum.hermann-splitthoff.de/forumdisplay.php?fid=1)
+--- Forum: Programmieren (https://forum.hermann-splitthoff.de/forumdisplay.php?fid=6)
+--- Thema: [MySQL] Daten aus Tabelle in eine andere Tabelle erfassen (/showthread.php?tid=1355)



Daten aus Tabelle in eine andere Tabelle erfassen - Joopi - 22-11-2024

Aus gegebenem Anlass wollte ich wissen, ob ich aus einer Tabelle oder einem JOIN-Statement Tabellenzeilen in einer neuen oder bestehenden Tabelle einfügen kann.

Ergebnis: ja, das geht.

Das war mein erster Versuch, um dieses Thema zu lösen (recht naiv, aber wer nicht wagt, der nicht gewinnt):

Code:
SELECT id, anz_datei INTO result FROM anzahlen WHERE anz_datei > 100;

Es kommt dabei zu einer Fehlermeldung seitens MySQL:

Zitat:#1327 - Nicht deklarierte Variable: result

Das kann so nicht funktionieren, denn die aufnehmende Tabelle ist nicht vorhanden. Also muss die Tabelle erstellt werden, zur Laufzeit, um eben Daten aufnehmen zu können:

Code:
CREATE TABLE result SELECT id, anz_datei FROM anzahlen WHERE anz_datei > 100;

Das hat funktioniert, denn die Tabelle wird angelegt, bevor die SELECT-Anweisung startet. Die neue Tabelle wurde mit Daten gefüllt. Das AUTO_INCREMENT aus dem Feld id wurde jedoch nicht mitgenommen. Solche Tabellen würde ich auch nur dann einsetzen, wenn ich sie temporär brauche (vielleicht versus Views?).
Ob die Attribute der Felder, die erstellt werden müssen, mitgeschleppt werden, muss ich noch recherchieren.

Nun sollen weitere Daten in die Tabelle aufgenommen werden. Dies erfolgt dann auf diese Art und Weise:

Code:
INSERT INTO result (id, anz_datei) SELECT id, anz_datei FROM anzahlen WHERE anz_datei = 5094;

Hierbei ist zu beachten, dass die aufnehmende Tabelle bereits existiert. Und schon sind die Daten erfasst und stehen zur Verfügung.

Warum kam ich auf diese Thematik?

Wenn ich ein Programm laufen lassen, dass sich Daten aus Tabellen mit JOIN-Statements holt, dann macht es vielleicht Sinn, die Abfragen vorab zu gestalten (und auch auszuführen), um später im Programmablauf nur noch auf Tabelle zugreifen zu können, ohne das die aufwendigen JOIN-Anweisung abzuarbeiten sind. Das ist nicht immer möglich, denn wenn im Programmablauf erst eine Unbekannte bekann wird, kann vorher keine Tabelle mit Inhalten gefüllt sein. Es kommt also auf den Anwendungsfall an.