Hallo
ich versuche ein kleines online-spiel zu erstellen
ich habe folgende 3 Tabellen (alle spalten sind int oder float):
Code:
city
+----+--------+---------+---------+---------+----------+
| id | userId | holz | stein | eisen | gemeinde |
+----+--------+---------+---------+---------+----------+
| 1 | 1 | 99347.5 | 62269.2 | 6285.03 | 1 |
+----+--------+---------+---------+---------+----------+
object
+----+----------+------+
| id | gemeinde | type |
+----+----------+------+
| 1 | 1 | 1 |
| 3 | 1 | 2 |
| 4 | 1 | 3 |
+----+----------+------+
worker
+----------+--------+---------+
| objectId | cityId | workers |
+----------+--------+---------+
| 1 | 1 | 35 |
| 3 | 1 | 35 |
| 4 | 1 | 29 |
+----------+--------+---------+
in det tabelle city werden städte gespeichert, mit deren rohstoffe und der gemeinde der sie angehören und die id des besitzers.
in der tabelle object sind rohstoffliefernde gebäude ausserhalb der städte gespeichert (type 1 ist ein sägewerk, type 2 ein steinbruch und type 3 eine eisengrube), die dann allen städten der gemeinde zur verfügung stehen.
in der tabelle worker sind dann die anzahl arbeiter gespeichert, die jede stadt an jedem object beschäftigt.
nun möchte ich dass die rohstoffe in allen städten eines users abhängig von der arbeiterzahl dazugerechnet werden.
ich habe folgenden befehl:
Code:
UPDATE city AS C LEFT JOIN (object AS O, worker AS W) ON (O.gemeinde=C.gemeinde AND W.objectId=O.id AND W.cityId=C.id) SET C.holz=C.holz+IF(O.type=1, W.workers, 0), C.stein=C.stein+IF(O.type=2, W.workers, 0), C.eisen=C.eisen+IF(O.type=3, W.workers, 0) WHERE C.userId=1
leider updatet dieser befehl nur die holzmenge, nicht aber stein und eisen.
wie könnte ich den befehl umschreiben dass alle rohstoffe aktualisiert werden? ich hoffen ich habe mein anliegen genug verständlich formuliert :D
danke schonmal für ratschläge.