![]() |
Datenbank: MySQL • Version: 5.1 • Zugriff über: phpMyAdmin
Problem mit SQL Update
Hallo,
gerade versuche ich einige Übersetzungen in unserer DB zu schieben:
Code:
Leider klappt das nicht:
UPDATE translations set name="Retaining plate" WHERE article_id in (SELECT article_id FROM `translations` WHERE name="Halteplatte" and language_id=1) AND language_id=2
Zitat:
Viele Grüße ... |
AW: Problem mit SQL Update
Man könnte wohl sowas in der Art probieren
Code:
Ist von
UPDATE tbl AS a
INNER JOIN tbl AS b ON .... SET a.col = b.col ![]() |
AW: Problem mit SQL Update
Das ist nicht unbedingt eine SQL Syntax Frage.
Du versuchst offenbar, eine Menge zu ändern, die gleichzeitig Teil Deiner Where Clause Kriterien ist. Das ist je nach DB problematisch. Du schreibst nicht, in welchem Umfang/Rahmen das stattfindet. 2.Schrittig sollte es jedenfalls gehen. Erst Pk IDs selektieren. Dann Update mit Einschränkung lediglich auf PK Spalte. |
AW: Problem mit SQL Update
Vielleicht so?
SQL-Code:
UPDATE
translations T SET name = "Retaining plate" WHERE language_id = 2 AND EXISTS( SELECT * FROM `translations` T2 WHERE T2.article_id = T.article_id AND T2.language_id = 1 AND T2.name = "Halteplatte") |
AW: Problem mit SQL Update
Hi,
@DeddyH Zitat:
Mit nem Update bekomme ich das nicht hin :? @jobo Das hört sich gut an. Wie mach ich das? Mit einem View? Viele Grüße ... |
AW: Problem mit SQL Update
Ein View würde an dem Kernproblem nichts ändern, Du schaust nur durch eine andere Brille auf die selben Daten.
Du zerlegst also Dein Update Statement in 2 SQL Befehle. Teil1 findet die PK IDs deren Records geändert werden sollen. Teil2 macht das Update, die Whereclause enthält lediglich die Liste der ID aus Teil 1, also per Copy/Paste Ergebnis aus 1 zur WhereClause Teil 2. Wie gesagt, Du hast nicht verraten in welchem Rahmen Du diese Änderung benötigst. Für eine Einmal-Geschichte (Datenfixing) wäre ein einmaliges SQL Gebastel wie oben vertretbar. In einem Programm könntest Du die 2. Teile dynamisch zusammen bauen. Serverseitig kann man es evtl. mit einer SP machen. Hier wäre per Code die gleiche Zerlegung der Schritte bestimmt erfolgreich. Elegant wäre aber natürlich ein einziges Statement. Ich kenne mySQL aber nicht gut genug, um das zu beschreiben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz