Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „MySQL SELECT im INSERT“

Fugel

rebmeM

PSD Beta Team
Hallo Leute,

ich versuche gerade ein SELECT im INSERT einzubauen, nur gelingt es mir nicht ganz.

Das ganze soll folgendermasen aussehen:

Erst möchte ich ganz normal einen INSERT machen, die Werte dafür bekomme ich aus Variablen. Also so:

PHP:
INSERT INTO tabelle(schpalte-1,spalte-2) VALUES 
            ('$val1','$val2')
Nun will ich jedoch noch eine dritte Spalte füllen, die Werte dafür sollen aber aus einer anderen Tabelle kommen und um 1 hoch gezählt werden. Versucht hab ich es so:

PHP:
INSERT INTO tabelle(schpalte-1,spalte-2) VALUES 
            ('$val1', SELECT spalte FROM tabelle WHERE bedingung DESC LIMIT 1)
Leider klappt es so nicht und ich bin mir auch nicht sicher an welcher Stelle ich +1 rechnen soll.

Habt ihr Ideen?
 
Zuletzt bearbeitet:

Mereel

Aktives Mitglied

AW: MySQL SELECT im INSERT

Also ich bin kein SQL-Profi, aber zuerst einmal musst du in der ersten Klammer auch so viele Spalten angeben, wie du unten Werte einfügst. Dann würde ich die Unterabfrage noch in Klammern setzen (weiß aber nicht, ob das nötig ist).

EDIT: Also die Klammer IST nötig. Und mir ist noch ein Fehler aufgefallen: Du kannst DESC nicht ohne einen ORDER BY- Befehl anwenden!

EDIT II: Das "+1" hängst du einfach an die Unteranfrage an (außerhalb der Klammern).
Die gesamte Abfrage muss dann Lauten:
Code:
[COLOR=#000000][COLOR=#0000BB]INSERT INTO tabelle[/COLOR][COLOR=#007700] ([/COLOR][COLOR=#0000BB]spalte[/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]spalte[/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000BB]2,spalte-3[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]VALUES 
            [/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'$val1'[/COLOR][COLOR=#007700],[/COLOR][COLOR=#DD0000]'$val2'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB](SELECT spalte FROM tabelle WHERE bedingung ORDER BY spalte DESC LIMIT 1[/COLOR][COLOR=#007700])+1) [/COLOR][/COLOR]
 
Zuletzt bearbeitet:

Fugel

rebmeM

PSD Beta Team
AW: MySQL SELECT im INSERT

War hier im Bsp. nur nen Schreibfehler, in meiner richtigen Abfrage stimmt die Anzahl. In Klammern funktioniert leider auch nicht.
 

littlestupid

Nicht mehr ganz neu hier

AW: MySQL SELECT im INSERT

Ich programmiere zwar inzwischen mehr mit oracle aber der Unterschied dürfte nicht so groß sein ...

PHP:
INSERT INTO tabelle(schpalte-1,spalte-2, spalte-3) VALUES 
            ('$val1','$val2', 1 + (SELECT spalte FROM tabelle WHERE bedingung) )
Die Where Bedingung darf dabei nur eine Zeile finden sonst geht's nicht.
Und numerisch sollte die Spalte dann auch sein oder der Wert gewandelt werden ...

Ist jetzt ein "trockener" Vorschlag ... vielleicht hilfts ja.

Welche Fehlermeldung kommt denn??
 
Zuletzt bearbeitet:

Fugel

rebmeM

PSD Beta Team
AW: MySQL SELECT im INSERT

klappt nicht, habs jetzt zum testen erstmal ohne die Variablen direkt in der SQL versucht, bekomme folgende Fehlermeldung: You can't specify target table 'kunden' for update in FROM clause

Der Code schaut wie folgt aus:

PHP:
INSERT INTO `kunden`(`firma`) VALUES
((SELECT `kunden_id` FROM `kunden` WHERE `kunden_id` = 1 ORDER BY id DESC LIMIT 1))
 

Mereel

Aktives Mitglied

AW: MySQL SELECT im INSERT

Dann versuch mal folgendes:
Code:
[COLOR=#000000][COLOR=#0000BB]INSERT INTO [/COLOR][COLOR=#DD0000]kunden[/COLOR][COLOR=#007700] ([/COLOR][COLOR=#DD0000]firma[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]VALUES
[/COLOR][COLOR=#007700](([/COLOR][COLOR=#0000BB]SELECT [/COLOR][COLOR=#007700]k.[/COLOR][COLOR=#DD0000]kunden_id [/COLOR][COLOR=#0000BB]FROM [/COLOR][COLOR=#DD0000]kunden[/COLOR][COLOR=#007700] AS k [/COLOR][COLOR=#0000BB]WHERE [/COLOR][COLOR=#007700]k.[/COLOR][COLOR=#DD0000]kunden_id[/COLOR][COLOR=#007700] = [/COLOR][COLOR=#0000BB]1 ORDER BY k.id DESC LIMIT 1[/COLOR][COLOR=#007700]))  [/COLOR][/COLOR]
 

littlestupid

Nicht mehr ganz neu hier

AW: MySQL SELECT im INSERT

[FONT=Verdana, Arial, Helvetica, sans-serif]Googeln Hilft auch:
INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", ...)
SELECT "Spalte3", "Spalte4", ...
FROM "Tabellen_Name2"
[/FONT]
 

Mereel

Aktives Mitglied

AW: MySQL SELECT im INSERT

[STRIKE]In diesem Fall hilft dein Codebeispiel aber auch nichts, littlestupid, da Fugel nicht zwei, sondern eine einzelne Tabelle verwendet; was hier der Fehlermeldung nach das eigentliche Problem ist.
Allerdings hast du natürlich Recht: Die Fehlermeldung zu googeln hätte auch schnell zu einer Lösung geführt. Oder zumindest die Fehlermeldung gleich im ersten Post mit anzugeben ;-)[/STRIKE]
EDIT: Entschuldigung, ich nehme alles zurück. Funktioniert doch so mit nur einer Tabelle. Wenn man keine Ahnung hat: Einfach mal Klappe halten :p
 
Zuletzt bearbeitet:

Fugel

rebmeM

PSD Beta Team
AW: MySQL SELECT im INSERT

[FONT=Verdana, Arial, Helvetica, sans-serif]Googeln Hilft auch:
INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", ...)
SELECT "Spalte3", "Spalte4", ...
FROM "Tabellen_Name2"
[/FONT]

So hatte ich es auch schon versucht, funktioniert auch aber wenn ich eine wariable mit einfügen will (wie oben beschrieben) dann klappts nicht mehr
 

Duddle

Posting-Frequenz: 14µHz

AW: MySQL SELECT im INSERT

Falls ich das richtig sehe, willst du Daten aus einer Tabelle in die gleiche Tabelle einfügen? Das funktioniert nicht in einem Schritt, du brauchst dafür eine temporäre Zwischentabelle.

Am wahrscheinlichsten ist aber, dass du den falschen Ansatz für dein Problem hast. Bist du sicher, dass du nicht einfach ein UPDATE machen willst? Vielleicht solltest du lieber die eigentliche Aufgabe beschreiben.


Duddle
 

hub

nicht ganz neu hier

AW: MySQL SELECT im INSERT

Moin, es geht:
So hatte ich es auch schon versucht, funktioniert auch aber wenn ich eine wariable mit einfügen will (wie oben beschrieben) dann klappts nicht mehr

übergib deinen Variableninhalt mit der Sql:
PHP:
SELECT $var01 , $var02, SpalteX, SpalteY FROM ... WHERE ...
Die Frage ist, ob das so Sinn macht. Ich würde erst die betreffende Zeile in ein Object lesen, verändern, was zu verändern ist, ID auf NULL setzen und dann per INSERT wieder zurück schreiben ...

Gruß Ulli
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.189
Beiträge
2.582.079
Mitglieder
67.258
Neuestes Mitglied
SaschMasch1312
Oben