imam comments tabelu i u njoj likes/dislikes kolone na osnovu kojih se rangiraju komentari. To je definisano u SQL-u sa:
Kôd:
`likes` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`dislikes` INT(10) UNSIGNED NOT NULL DEFAULT '0',
Kad postavim ovaj upit:
Kôd:
mysql> SELECT likes, dislikes, ( (likes - dislikes -1) / (likes + dislikes + 1) ) as new_rank FROM `comments`;
+-------+----------+---------------------------+
| likes | dislikes | new_rank |
+-------+----------+---------------------------+
| 0 | 0 | 18446744073709551615.0000 |
| 1 | 0 | 0.0000 |
| 2 | 0 | 0.3333 |
| 0 | 0 | 18446744073709551615.0000 |
| 1 | 0 | 0.0000 |
+-------+----------+---------------------------+
kao sto vidite gde god su likes i dislikes oba 0 rezultat bude out of the range umesto da bude -1? Jel to ja imam neku gresku koju ne vidim ili je mysql odlepio? Pretpostavljam da ima neke veze sa time sto su ova dva polja unsigned, ali zar ne bi trebalo da je rezultat operacije u SELECT-u uvek signed ?!
EDIT: ovo je zapravo UPDATE upit koji osvezava rank, ali posto puca na ovoj formuli prebacio sam ga na SELECT da vidim sta se desava...
EDIT 2: Da, zaista je do unsigned polja. Kad sam promenio na signed radi sve normalno. Kakav zbun... ovo bas i nije feature po meni, pre je bag...