JeuxOnLineForumsPlusConnectés : 793 (sites) | 1388 (forums)Créer un compte
Forums divers
La Taverne
Les forums JOL > Forums divers > La Taverne > Pb de Sql :( RSS
   
Répondre
Partager Outils Rechercher
Avatar de Manaloup
Manaloup
Alpha & Oméga
 
Avatar de Manaloup
 

Pb de Sql :(

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 ?
Lien direct vers le message - Vieux
Avatar de Magnet
Magnet
Empereur
 
Avatar de Magnet
 
normal, l'alias (AS) ne peut etre mis dans une clause WHERE ou HAVING

faut que tu copies le tout dans ta requete, le 'Distance' ne passera pas.
Lien direct vers le message - Vieux
Avatar de Hanny Drocéphale
Hanny Drocéphale [FED]
 
Avatar de Hanny Drocéphale
 
T'essaye peut-être de faire trop compliqué pour Mysql ?

Sinon pour commencer, vire "distance" et met ( calcul compliqué ) <= 10 dans la clause where histoire de la tester
Lien direct vers le message - Vieux
Avatar de ¤ TynriL ¤
¤ TynriL ¤
Bagnard
 
Avatar de ¤ TynriL ¤
 
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.
Lien direct vers le message - Vieux
Avatar de Manaloup
Manaloup
Alpha & Oméga
 
Avatar de Manaloup
 
Ca marche !!!!!

Qu'est ce que c'est con

Edit : Jvais aussi essayer la méthode par Having
Re-Edit : Bon ben ca marche des 2 façons !
Lien direct vers le message - Vieux
Avatar de Hanny Drocéphale
Hanny Drocéphale [FED]
 
Avatar de Hanny Drocéphale
 
Si tu commences a faire des trucs compliqués avec des alias et des fonctions de la mort, hesite pas a faire des fonctions & procédures stockées histoire de gagner en lisibilté dans le code

pis ca permet d'apprendre plein de trucs aussi
Lien direct vers le message - Vieux
Avatar de Lango
Lango
 
Avatar de Lango
 
Il me semble que ta requête était correcte en SQL.
Mais MySQL n'implémente pas tout-à-fait la norme SQL, et en particulier interdit les SELECT imbriqués.

(remarque en référence au titre où tu parles de SQL et non de MySQL)
Lien direct vers le message - Vieux
Avatar de odyssee
odyssee
Alpha & Oméga
 
Avatar de odyssee
 
fo mettre les meme parametres dans le select et le order me semble t il
c ca?non?
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forums divers > La Taverne > Pb de Sql :(
   

Connectés sur ce fil

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

Outils Rechercher
Rechercher:

Recherche avancée

Thème visuel : Fuseau horaire GMT +1. Il est actuellement 19h42.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite