Uch, problem wydaje mi się mocno skomplikowany (zwłaszcza że w temacie baz danych nie jestem zbyt zaawansowany), ale mam nadzieję że pomoc znajdę. W czym problem? Otóż:
mam tabelę:
Kod
+-----+---------+--------------+---------------+
| id  |  owner  |     name     |      value    |
+-----+---------+--------------+---------------+
|  1  |    1    |    cecha     |      175      |
|  2  |    1    |     max      |      500      |
|  3  |    1    |   przyrost   |      100      |
|  4  |    2    |    cecha     |      475      |
|  5  |    2    |     max      |      550      |
|  6  |    2    |   przyrost   |      200      |
|  7  |    3    |    cecha     |     5000      |
|  8  |    3    |     max      |     1000      |
|  9  |    3    |   przyrost   |      250      |
+-----+---------+--------------+---------------+
I chciałbym teraz jednym zgrabnym zapytaniem do `cecha` dodać `przyrost` tak, żeby nie przekroczyć maks, a jednocześnie tak, by już po przekroczeniu `max` nie obniżać wartości rekordów dla danego owner. Brzmi zagmatwanie, więc podam oczekiwany rezultat:
Kod
+-----+---------+--------------+---------------+
| id  |  owner  |     name     |      value    |
+-----+---------+--------------+---------------+
|  1  |    1    |    cecha     |      275      |    przyrost o 100; value = (175 + 100 < 500 => 275)
|  2  |    1    |     max      |      500      |
|  3  |    1    |   przyrost   |      100      |
|  4  |    2    |    cecha     |      550      |    przyrost o 200; value = (475 + 200 > 550 => 550)
|  5  |    2    |     max      |      550      |
|  6  |    2    |   przyrost   |      200      |
|  7  |    3    |    cecha     |     5000      |    przyrost o 250; value = (5000 > 1000 => 5000)
|  8  |    3    |     max      |     1000      |
|  9  |    3    |   przyrost   |      250      |
| 10  |    3    |  jakas_dana  |    521512512  |
+-----+---------+--------------+---------------+
Takie przeliczanie powinno być dla każdej unikalnej wartości pola "owner". Czyli: Jeżeli `cecha` + `przyrost` jest mniejsza od `max`, to `cecha` ma wartość tej sumy. Jeżeli `cecha` + `przyrost` jest większa od `max`, to `cecha` ma wartość `max`. Jeżeli jednak cała `cecha` jest większa od `max`, to wtedy pozostaje bez zmian. Rozumiecie o co mi chodzi? winksmiley.jpg