![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 13.04.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
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 +-----+---------+--------------+---------------+ 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:| 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 | +-----+---------+--------------+---------------+ Kod +-----+---------+--------------+---------------+ 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? | 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 | +-----+---------+--------------+---------------+ ![]() -------------------- Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:18 |