Hallo Tim,
stimmt, jetzt wird es sogar mir klarer (hoffentlich). Es geht doch nichts über eine echtes Beispiel.
Ich habe mir mal folgendes überlegt:
CREATE TABLE gesamtbetrag (
id INT NOT NULL,
betrag DEC(6,2),
PRIMARY KEY (id)
);
INSERT INTO gesamtbetrag VALUES
( 1, 100 ),
( 2, 200 );
mysql> select * from gesamtbetrag;
+----+--------+
| id | betrag |
+----+--------+
| 1 | 100.00 |
| 2 | 200.00 |
+----+--------+
2 rows in set (0.00 sec)
mysql>
/**
* Beispiel für:
* Schalter 1 ist ON dann +11
* Schalter 2 ist ON dann +22
* Schalter 3 ist ON dann +33
*/
UPDATE gesamtbetrag
SET betrag = betrag + ( SELECT CASE
WHEN 1 IS NOT NULL THEN 11
ELSE 0
END )
+ ( SELECT CASE
WHEN 2 IS NOT NULL THEN 22
ELSE 0
END)
+ ( SELECT CASE
WHEN 3 IS NOT NULL THEN 33
ELSE 0
END)
WHERE id = 1;
mysql> select * from gesamtbetrag;
+----+--------+
| id | betrag |
+----+--------+
| 1 | 166.00 |
| 2 | 200.00 |
+----+--------+
2 rows in set (0.00 sec)
mysql>
/**
* Beispiel für:
* Schalter 1 ist OFF
* Schalter 2 ist ON dann + 22
* Schalter 3 ist OFF
*/
UPDATE gesamtbetrag
SET betrag = betrag + ( SELECT CASE
WHEN NULL IS NOT NULL THEN 11
ELSE 0
END )
+ ( SELECT CASE
WHEN 2 IS NOT NULL THEN 22
ELSE 0
END)
+ ( SELECT CASE
WHEN NULL IS NOT NULL THEN 33
ELSE 0
END)
WHERE id = 2;
mysql> select * from gesamtbetrag;
+----+--------+
| id | betrag |
+----+--------+
| 1 | 166.00 |
| 2 | 222.00 |
+----+--------+
2 rows in set (0.00 sec)
mysql>
In welcher Form jetzt "Schalter" in dem SQL erscheint, ist mit noch unklar.
Die Logik ist:
Wenn $Schalter den Wert NULL hat, dann ist er OFF
Wenn $Schalter den Wert NOT NULL hat, dann ist er ON
Grüße
Thomas