Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bug mysqla, czy mój błąd?, gdy w polu char(40) znajduje się liczba
L_Devil
post
Post #1





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam

Mam tabelę następującej struktury i treści:
Kod
+-------+---------+------------+-------------+
| id    |  owner  |    name    |    value    |
|int(15)| int(7)  |   char(40) |   char(40)  |
+-------+---------+------------+-------------+
|   1   |    1    |   points   |     75      |
|   2   |    1    | points_add |    150      |
|   3   |    1    | points_max |    5000     |
|   4   |    1    |  costam    | jakas_dana  |
|   5   |    2    |  points    |    250      |
|   6   |    2    | points_add |    150      |
|   7   |    2    | points_max |    5000     |
|   8   |    3    |  points    |    4900     |
|   9   |    3    | points_add |    250      |
|  10   |    3    | points_max |    5000     |
|  11   |    4    |  points    |    5500     |
|  12   |    4    | points_add |    250      |
|  13   |    4    | points_max |    5000     |
|  14   |    4    |  costam    | jakas_dana  |
+-------+---------+------------+-------------+


Wywołuję na niej zapytanie
  1. UPDATE
  2. TABLE AS t1,
  3. TABLE AS t2,
  4. TABLE AS t3
  5. SET t1.value =
  6. IF(t1.value > t2.value, t1.value,
  7. IF(t1.value+t3.value > t2.value, t2.value, t1.value+t3.value)
  8. )
  9. WHERE t2.owner = t1.owner AND t3.owner = t1.owner AND t1.name='points' AND t2.name='points_max' AND t3.name='points_add';



Spodziewany rezultat:
Kod
+-------+---------+------------+-------------+
| id    |  owner  |    name    |    value    |
|int(15)| int(7)  |   char(40) |   char(40)  |
+-------+---------+------------+-------------+
|   1   |    1    |   points   |     225     |
|   2   |    1    | points_add |    150      |
|   3   |    1    | points_max |    5000     |
|   4   |    1    |  costam    | jakas_dana  |
|   5   |    2    |  points    |    400      |
|   6   |    2    | points_add |    150      |
|   7   |    2    | points_max |    5000     |
|   8   |    3    |  points    |    5000     |
|   9   |    3    | points_add |    250      |
|  10   |    3    | points_max |    5000     |
|  11   |    4    |  points    |    5500     |
|  12   |    4    | points_add |    250      |
|  13   |    4    | points_max |    5000     |
|  14   |    4    |  costam    | jakas_dana  |
+-------+---------+------------+-------------+


Otrzymany rezultat:
Kod
+-------+---------+------------+-------------+
| id    |  owner  |    name    |    value    |
|int(15)| int(7)  |   char(40) |   char(40)  |
+-------+---------+------------+-------------+
|   1   |    1    |   points   |     75      |  // Tutaj nie podniosło
|   2   |    1    | points_add |    150      |
|   3   |    1    | points_max |    5000     |
|   4   |    1    |  costam    | jakas_dana  |
|   5   |    2    |  points    |    400      |
|   6   |    2    | points_add |    150      |
|   7   |    2    | points_max |    5000     |
|   8   |    3    |  points    |    5000     |
|   9   |    3    | points_add |    250      |
|  10   |    3    | points_max |    5000     |
|  11   |    4    |  points    |    5500     |
|  12   |    4    | points_add |    250      |
|  13   |    4    | points_max |    5000     |
|  14   |    4    |  costam    | jakas_dana  |
+-------+---------+------------+-------------+


Ktoś wie, skąd się takie coś bierze?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
L_Devil
post
Post #2





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Ze względu na to, że w tej tabeli przechowuję zarówno dane liczbowe jak i stringowe - a ponieważ utworzenie tabeli z kolumnami na to byłoby dość kłopotliwe (ciągłe dodawanie i usuwanie pól), więc jest jak jest (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Owner określa dla jakiego id użytkownika parametry są ważne

Zapytanie ma za zadanie:
a.) Wartości points mniejsze od points_max zwiększyć o points_add, tak, by nie przekroczyły points_max
b.) Wartości points większe bądź równe points_max zostawić niezmienione

(IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 10:31