Server-Typ: MariaDB
Server-Version: 10.5.23-MariaDB-1:10.5.23+maria~ubu2004-log - mariadb.org binary distribution
Protokoll-Version: 10
weiß gar nicht welches ein sinnvoller Titel für diese Frage wäre...
Also, ich glaube nicht daß das machbar ist,
weil sich mal wieder die Katze in den Schwanz beißt
aber ich würde es doch gerne mal klären.
Ich versuche mal das Prinzip zusammen zu fassen
geht um ein UPDATE bei dem sich während des Vorgangs ergibt welche weitere Datensätze betroffen sind
Speziell:
Wenn eine Bedingung zutrifft einen Spaltenwert (update_col) zu ändern
sollen auch alle Spaltenwerte (update_col) geändert werden bei denen
einen anderer Spaltenwert (s_col) dieses Datensatzes auf andere zutrifft
Tabellen-Beispiel
UPDATE tab SET update_col = up_val
SELECT s_col FROM tab AS t
WHERE w_col = 2 OR s_col = t.s_col
(funktioniert so natürlich nicht)
sollte dann die Zeilen 1, 3, 4, 6 und 7 betreffen
Also:
die erste WHERE Bedingung betrifft Zeile 3 und 4
dort hat s_col den Wert 3 bzw. 1 und jetzt will ich auch alle
Zeilen ändern bei denen der s_col-Wert auch 3 oder 1 ist
gibt es da irgend ein Lösung?
Wenn es dazu eine Abfrage gäbe wäre das sehr elegant,
sonnst müsste ich das halt auf zwei mal machen.
vielen Dank im Voraus
Zen
Server-Version: 10.5.23-MariaDB-1:10.5.23+maria~ubu2004-log - mariadb.org binary distribution
Protokoll-Version: 10
weiß gar nicht welches ein sinnvoller Titel für diese Frage wäre...
Also, ich glaube nicht daß das machbar ist,
weil sich mal wieder die Katze in den Schwanz beißt
aber ich würde es doch gerne mal klären.
Ich versuche mal das Prinzip zusammen zu fassen
geht um ein UPDATE bei dem sich während des Vorgangs ergibt welche weitere Datensätze betroffen sind
Speziell:
Wenn eine Bedingung zutrifft einen Spaltenwert (update_col) zu ändern
sollen auch alle Spaltenwerte (update_col) geändert werden bei denen
einen anderer Spaltenwert (s_col) dieses Datensatzes auf andere zutrifft
Tabellen-Beispiel
Zeile | w_col | s_col | update_col |
1 | 1 | 1 | up_val |
2 | 1 | 2 | |
3 | 2 | 3 | up_val |
4 | 2 | 1 | up_val |
5 | 3 | 2 | |
6 | 3 | 3 | up_val |
7 | 4 | 1 | up_val |
8 | 4 | 2 |
UPDATE tab SET update_col = up_val
SELECT s_col FROM tab AS t
WHERE w_col = 2 OR s_col = t.s_col
(funktioniert so natürlich nicht)
sollte dann die Zeilen 1, 3, 4, 6 und 7 betreffen
Also:
die erste WHERE Bedingung betrifft Zeile 3 und 4
dort hat s_col den Wert 3 bzw. 1 und jetzt will ich auch alle
Zeilen ändern bei denen der s_col-Wert auch 3 oder 1 ist
gibt es da irgend ein Lösung?
Wenn es dazu eine Abfrage gäbe wäre das sehr elegant,
sonnst müsste ich das halt auf zwei mal machen.
vielen Dank im Voraus
Zen
Zuletzt bearbeitet: