Veröffentlicht 3. Februar 200916 j Hallo, irgendwie bekomme ich das nicht gebacken, folgende Ausgangssituation: Ich habe 2 Tabellen produkte und optionen. In der Tabelle produkte habe ich den Primärschlüssel "id" und die Produktnummer "nummer" etc. In der Tabelle optionen gibt es ebenfalls die obengenannte "id", den "optionsname" (blau, grün, rot, nein, viel, groß etc.) und die "optionsnummer". Zu jeder "id" gibt es 3 oder mehr/weniger optionsnamen je nach produkt, also z.B. id | optionsname | optionsnummer 3 | blau | 55555 3 | grün | 66666 3 | rot | 77777 Nun möchte ich, daß die optionsnummer mit der nummer überschrieben wird für den Fall blau, grün, rot. Was mache ich bei folgenden Code falsch? UPDATE optionen SET optionsnummer = nummer FROM (SELECT p.id, p.nummer, o.id, o.optionsnummer, o.optionsname FROM produkte AS p OUTER JOIN optionen AS o ON p.id = o.id) WHERE optionsname = 'blau' OR optionsname = 'grün' OR optionsname = 'rot'
3. Februar 200916 j Hallo, er zeigt mir unter phpmyadmin folgende Fehlermeldung an: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (SELECT p.id, p.nummer, o.id, o.optionsnummer, o.optionsname, at line 1). Klammer falsch ? Danke Ja-Sons
3. Februar 200916 j Was möchtest Du überhaupt? So wie ich das sehe macht das Statement keinen Sinn. Du möchtest ein Update auf eine Tabelle von einem Select machen? Ein Select ist statisch, auf diesem kannst Du keine Änderungen machen. Bitte einmal durcharbeiten: MySQL Datenbankhandbuch Phil
5. Februar 200916 j Danke Phil, ich hatte gedacht, daß ich mich auf die 3. UPDATE-Syntax dieser Seite: UPDATE zum Aktualisieren existierender Zeilen beziehen kann, aber die MySQL Syntax war dann doch etwas anders und zwar wie folgt: UPDATE optionen INNER JOIN produkte ON optionen.id = produkte.id SET optionen.optionsnummer = produkte.nummer WHERE optionsname = "rot" Problem gelöst... Gruß Jan
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.