Pb de Sql :(

Répondre
Partager Rechercher
J'ai fait une petite base sous MySql et une requête me pose problème ..

SELECT des_trucs,
(TRUNCATE(SQRT(POWER((`CoordsX`-(-46)),2))+SQRT(POWER((`CoordsY`-(17)),2)),0)) As `Distance`
FROM ma_table
WHERE 1 AND des_params AND `Distance` <=10
ORDER BY `Distance`
LIMIT 0,10

En gros je calcule la distance entre 2 points
1 point de base, ici représenté par les cordonnées (-46;17)
1 point dans la base, ses coordonnées sont stockées dans les champ CoordsX et CoordsY
cette distance je l'apelle tout simplement Distance..
Ensuite je souhaite ne retourner que les résultats ou la Distance est plus petite ou égale à 10
Malheureusement MySQL ne m'aime pas

Erreur
requête SQL :
MySQL a répondu:
Unknown column 'Distance' in 'where clause'

Aperremment il ne trouve pas la propriété Distance ..
En revanche si je ne met pas la restriction dans le Where sur la Distance, l'Order By Distance passe sans problème
Que faire ? est ce impossible sous MySql (3.23), une erreur de syntaxe ?
Tu dois utiliser HAVING et non pas WHERE.

Voir :
6.4.1 SELECT Syntax
A.5.4 Problems with alias
Code:
SELECT des_trucs, 
(TRUNCATE(SQRT(POWER((`CoordsX`-(-46)),2))+SQRT(POWER((`CoordsY`-(17)),2)),0)) As `Distance`
FROM ma_table
WHERE 1 AND des_params
HAVING `Distance` <=10 
ORDER BY `Distance` 
LIMIT 0,10
Sans avoir testé, mais y'a pas de raison.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés