[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
[Gelöst] SQL Update-Abfrage vereinfachen? - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

[Gelöst] SQL Update-Abfrage vereinfachen?

19. Dez 2011, 23:24

Hallo

Gegeben ist eine Tabelle, die allein mit Hilfe von (My)SQL-Befehlen etwas umstrucktiert werden soll.

Geht das folgende auch eleganter zu lösen?

Code: Alles auswählen

UPDATE `action` SET `mode` = 0 WHERE `add` = '0' AND `edit` = '0' AND `delete` = '0';
UPDATE `action` SET `mode` = 1 WHERE `add` = '1' AND `edit` = '0' AND `delete` = '0';
UPDATE `action` SET `mode` = 2 WHERE `add` = '0' AND `edit` = '1' AND `delete` = '0';
UPDATE `action` SET `mode` = 3 WHERE `add` = '1' AND `edit` = '1' AND `delete` = '0';
UPDATE `action` SET `mode` = 4 WHERE `add` = '0' AND `edit` = '0' AND `delete` = '1';
UPDATE `action` SET `mode` = 5 WHERE `add` = '1' AND `edit` = '0' AND `delete` = '1';
UPDATE `action` SET `mode` = 7 WHERE `add` = '1' AND `edit` = '1' AND `delete` = '1';
Kurze Erläuterung
Die bisherigen Spalten 'add', 'edit' und 'delete' können jeweils 0 oder 1 sein.
Es soll am Ende von bisher 3 verwendeten Spalten auf eine gekürzt werden.
Diese 'mode'-Zustände berechnen sich wie folgt:

0 - nichts
1 - add
2 - edit
3 - add+edit
4 - delete
5 - add+delete
7 - add+edit+delete
Zuletzt geändert von Koala am 20. Dez 2011, 00:58, insgesamt 1-mal geändert.
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
Gregor.Harlan
Entwickler
Beiträge: 1130
Registriert: 4. Jun 2007, 10:35
Wohnort: Frankfurt am Main

Re: SQL Update-Abfrage vereinfachen?

19. Dez 2011, 23:54

Hi,

ungetestet, aber ich denke, es müsste so gehen:

Code: Alles auswählen

UPDATE `action` SET `mode` = CONV(CONCAT(`delete`,`edit`,`add`),2,10);
Gruß, Gregor

Edit: Letztlich das selbe, aber kürzer:

Code: Alles auswählen

UPDATE `action` SET `mode` = `add` + 2 * `edit` + 4 * `delete`;
Friends Of REDAXO: Gemeinsame REDAXO-Entwicklung!

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

Re: SQL Update-Abfrage vereinfachen?

20. Dez 2011, 00:15

Perfekt!
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Zurück zu „Sonstiges“