Mehrere INSERT INTO Abfragen auf einmal?

5 Antworten

Hallo MIckan1994,

wenn ich das richtig verstanden habe willst du einen "Namen" aus der Tabelle2 in die Tabelle1 schreiben, wenn die Datenzeile mit dem Namen die gleiche Finanzprojektnummer hat, wie die im Formular ausgewählt?

INSERT INTO tabelle1 (name) VALUES ( (SELECT name FROM tabelle2 WHERE finanzprojektnummer = '".$finanzprojektnummer."';) );

Ich weiß nicht, ob man das so schachteln kann.

So wie ich das sehe müsstest du den Namen erst aus der Tabelle auslesen, bzw eine Schleife bauen.

Also mit einem SELCET name INTO varName FROM tabelle2 WHERE 

finanzprojektnummer = '".$finanzprojektnummer."';

Dann kannst du damit arbeiten, falls die Variable "varName" leer sein sollte, macht er nichts ansonsten dein INSERT Befehl.

Ein INSERT fügt einen neuen Satz in eine Tabelle ein, zwei INSERTs nacheinander eben zwei Sätze. Die Datenbank macht genau das, was Du ihr befiehlst. Wenn Du alles in einem Satz haben willst, schicke nur einen Insert weg für das Einfügen und mache die weiteren Ergänzungen mit UPDATE. Damit kannst Daten in bereits vorhandene Sätze nachtragen bzw. Datenfelder ändern. Für den UPDATE benötigst den Primärschlüssel oder sonst eine eindeutige Identifikation des zu ändernden Satzes (oder auch zu ändernde Sätze, man kann mit UPDATE auch mehrere Sätze auf einmal ändern).

Alles gute Antworten bis jetzt, aber denkst du wirklich, dass du es so unsicher prorammieren willst?

Ich meine practice to day ist doch PDO und MySQLi..

Soll keine Belehrung sein. Aber dein Code ist SQL-Injection gefährdet wenn das mal kein Problem darstellt.

Woher ich das weiß:Hobby – Ich bin älter als das Internet.

Du bist sicher, dass Du zwei Datensätze in Tabelle1 haben willst, einen nur mit dem Namen und einen mit mandant,FP,...?

Auch umgekehrt ergäbe das keinen Sinn, weil in dem gerade eingefügten Datensatz kein Name enthalten ist.

Vielleicht verdeutlichst Du das!

Mickan1994 
Fragesteller
 27.12.2016, 14:25

Nein ich möchte einen Datensatz in Tabelle 1 haben mit den Inhalten aus dem Formular und der Name soll sich im gleichen Datensatz aus Tabelle2 ziehen, wenn die Finanzprojektnummer übereinstimmt

1
Mikkey  27.12.2016, 14:30
@Mickan1994

Dann solltest Du den SELECT aus Tabelle2 direkt in den ersten (dann einzigen) INSERT schreiben

INSERT INTO Tabelle1 (name, ...) Values
((SELECT Name FROM tabelle2  ...),
'".$mandant."', ...

übrigens ist diese Art von Datenbank-Manipulation anfällig für SQL-Injection. Du Solltest die textlichen Inhalte durch einen Filter laufen lassen, der '-Zeichen maskiert.

0

Wieso überhaupt Daten duplizieren und nicht einfach Nummer in Tabelle 1 und Namen holen, wemlnn dus brauchst.