Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: liczba ujemna w polu tworzonym "w locie"
Forum PHP.pl > Forum > Bazy danych > MySQL
kacpero1094
Napisałem sobie zapytanie:
  1. SELECT *, (r.ratePlus - r.rateMinus) AS rate FROM elements AS e JOIN rates AS r ON e.eId = r.eId ORDER BY rate DESC LIMIT 10

I problem w tym, że jeśli r.ratePlus > r.rateMinus, to zwracane są dziwne liczby zamiast liczb ujemnych. Czy jest jakiś sposób, żeby określić, że to rate definiowane na początku ma mieć atrybut SIGNED?
mortus
Cytat(kacpero1094 @ 22.08.2011, 21:21:59 ) *
I problem w tym, że jeśli r.ratePlus > r.rateMinus, to zwracane są dziwne liczby zamiast liczb ujemnych.

Jak dla mnie zwracane są prawidłowo liczby dodatnie.
Smertius
  1. CAST(nazwa_kolumny AS SIGNED)
kacpero1094
Cytat(mortus @ 22.08.2011, 21:50:11 ) *
Jak dla mnie zwracane są prawidłowo liczby dodatnie.

Sorry. Zagapiłem się. Oczywiście znak powinien być odwrotnie smile.gif
mortus
No to jeśli kolumny ratePlus i rateMinus są unsigned, to trzeba je rzutować, tak jak pisał Smertius.
  1. SELECT *, (CAST(r.ratePlus AS SIGNED) - CAST(r.rateMinus AS SOGNED)) AS rate FROM elements AS e JOIN rates AS r ON e.eId = r.eId ORDER BY rate DESC LIMIT 10

Jeśli natomiast kolumny nie są unsigned, to być może przekraczają zakres odpowiedniego typu i trzeba ten zakres zwiększyć lub zmienić typ kolumny.
kacpero1094
Cytat(Smertius @ 22.08.2011, 21:52:47 ) *
  1. CAST(nazwa_kolumny AS SIGNED)

Dzięki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.