Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Modyfikacja pola tabeli wg innego pola tej samej tabeli tak, by nie przekroczyć wartości w trzecim polu tej samej tabeli
L_Devil
post 5.07.2006, 15:13:09
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
+-----+---------+--------------+---------------+
| 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


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:18