sql-update in abhängigkeit eines Wertes in einer anderen Tabelle
Hallo alle zusammen,
ich habe eine Frage zu einem update-statement.
ich würde gerne etwas machen in der art:
update tab1
case wert.tab2
when 100 set wert.tab1 = 1
when 200 set wert.tab1 = 2
end
where
tab1.id = tab2.id
es soll also ein wert aus tab1 in abhängigkeit des wertes in tab2 verändert werden. Da ich tab2 aber nirgendwo bekannt mache, läuft das script
auf einen Fehler. An welcher stelle kann ich Tabelle 2 noch in das update-statement einbauen?
Vielen Dank, ihr würder mir sehr helfen!
Viele Grüße, Maze
ich habe eine Frage zu einem update-statement.
ich würde gerne etwas machen in der art:
update tab1
case wert.tab2
when 100 set wert.tab1 = 1
when 200 set wert.tab1 = 2
end
where
tab1.id = tab2.id
es soll also ein wert aus tab1 in abhängigkeit des wertes in tab2 verändert werden. Da ich tab2 aber nirgendwo bekannt mache, läuft das script
auf einen Fehler. An welcher stelle kann ich Tabelle 2 noch in das update-statement einbauen?
Vielen Dank, ihr würder mir sehr helfen!
Viele Grüße, Maze
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 110220
Url: https://administrator.de/contentid/110220
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
5 Kommentare
Neuester Kommentar
unterstützt deine Datenbank Variablen ? - dann versuch es doch mal damit:
.. oder evtl. mit einer unter Abfrage:
SET @var = (SELECT CASE wert WHEN 100 THEN 1 WHEN 200 THEN 2 END FROM ... );
UPDATE tabelle SET wert = @var WHERE ... ;
.. oder evtl. mit einer unter Abfrage:
UPDATE tabelle (spalte, ..) SELECT ...
UPDATE tabelle SET spalte = (SELECT ... ) WHERE ...
ok - 2. Beispiel 1. Zeile : falscher Syntax !
in der 3. Zeile:
zu beachten ist das die innere SELECT Anweisung nur ein Feld und eine Zeile zurückgeben darf. - Also genau das was Du schon ganz oben in deine UPDATE Anweisung eingetragen hast.
.. habe mir nochmal deine Beschreibung von ganz oben durchgelesen - und glaube Du wirst nicht umher kommen das in eine Schleife zu packen - entweder in deinem Script oder in SQL.
evtl. könnte das auch eine Alternative sein !? :
in der 3. Zeile:
zu beachten ist das die innere SELECT Anweisung nur ein Feld und eine Zeile zurückgeben darf. - Also genau das was Du schon ganz oben in deine UPDATE Anweisung eingetragen hast.
UPDATE tabelle SET
spalte = (
SELECT
CASE wert.tab2
WHEN 100 THEN 1
WHEN 200 THEN 2
END AS 'wert'
FROM tab1, tab2
WHERE tab1.id = tab2.id
LIMIT 1
)
WHERE ...
.. habe mir nochmal deine Beschreibung von ganz oben durchgelesen - und glaube Du wirst nicht umher kommen das in eine Schleife zu packen - entweder in deinem Script oder in SQL.
evtl. könnte das auch eine Alternative sein !? :
UPDATE tab1 SET spalte = 1 WHERE id IN (SELECT id FROM tab2 WHERE wert = 100 );
UPDATE tab1 SET spalte = 2 WHERE id IN (SELECT id FROM tab2 WHERE wert = 200 );