J'ai un problème assez curieux avec la fonction ABS de MySQL (5.0.45, sous Windows), peut-être que l'erreur est juste sous mon nez mais en attendant je ne comprends pas. J'ai une table "grid" qui possède deux champs "x" et "y", et qui contient des enregistrements pour chaque couple (x, y) tels que 0 <= x <= 99 et 0 <= y <= 99.
Voilà une requête qui me semblait assez simple et son résultat :
SELECT MAX(x) as max_x, MIN(x) as min_x, MAX(y) as max_y, MIN(y) as min_y FROM `grid` WHERE ABS(x - 50) <= 8 AND ABS(y - 50) <= 8
max_x min_x max_y min_y 58 50 58 50
Pourquoi je n'ai pas 42 en min_x et min_y ? D'autant plus qu'en inversant l'expression dans les ABS, ce qui ne devrait donc rien changer au résultat, j'ai :
SELECT MAX(x) as max_x, MIN(x) as min_x, MAX(y) as max_y, MIN(y) as min_y FROM `grid` WHERE ABS(50 - x) <= 8 AND ABS(50 - y) <= 8
max_x min_x max_y min_y 50 42 50 42
J'ai zappé un détail ou il se passe quelque chose de louche ?