Between sur un Alias ? - SQL/NoSQL - Programmation
Marsh Posté le 06-04-2006 à 18:24:43
SELECT id, latitude, LONGITUDE, round(((6366*acos(cos(latitude)*cos(0.759218224617533)*cos(0.113155507353202-LONGITUDE)+sin(latitude)*sin(0.759218224617533)))*1.4),1) AS 'proximite'
FROM match_users
WHERE round(((6366*acos(cos(latitude)*cos(0.759218224617533)*cos(0.113155507353202-LONGITUDE)+sin(latitude)*sin(0.759218224617533)))*1.4),1) BETWEEN '0' AND '200';
Marsh Posté le 06-04-2006 à 18:31:59
C'est un HAVING qu'il faut, pas un WHERE
De plus et si ton sgbd le permet, pour la clareté et maintenabilité il vaut mieux faire une fonction stockée.
Marsh Posté le 06-04-2006 à 18:48:47
C'est bourrin, très bourrin même...mais ça fonctionne
C'est quand qu'on se marie ??
Sinon smaragbus une fonction stockée est impossible : 35000 villes dans la base à multiplier par 35000, ça nous donne un truc du genre "costaud", enfin si j'ai bien compris ce que tu voulais dire par "fonction stockée"
Marsh Posté le 06-04-2006 à 22:44:33
Syl_83 a écrit : |
non c'est pas ça. Une fonction stockée, c'est...
...une fonction stockée dans la db
et sinon pour ta requete, il faut utilisé un HAVING :
Citation : |
c'est quand même plus clair
et avec une fonction stockée :
Citation : SELECT id, latitude, LONGITUDE, distance(latitude,LONGITUDE) AS proximite FROM match_users HAVING proximite BETWEEN 0 AND 200 |
ça sert d'ouvrir une doc sql
Marsh Posté le 06-04-2006 à 23:31:59
smaragdus a écrit : non c'est pas ça. Une fonction stockée, c'est... |
Fonction stockée pas possible je crois, je suis en mySQL 4.1 et ce n'est possible qu'a partir de la version 5 si j'ai bien compris
Sinon oui c'est beaucoup plus clair avec un HAVING
Je manque un peu de réflexes, j'suis encore un peu "tendre", y'a moins d'un mois je ne savais même pas ce qu'était le SQL et je n'avais absolument aucune notion de programation dans un quelquonque autre langage
Là j'ai eu beau lire la doc je n'ai rien trouvé de concluant
Enfin ça fonctionne, c'est déjà ça
Marsh Posté le 06-04-2006 à 18:08:17
Je me voit encore bloqué avec la mise au point de mon moteur de géolocalisation
Mais là c'est pour une connerie, enfin je crois...je penche sur une erreur d'orthographe mais pas moyen de trouver où
J'ai une table match_users dans laquelle est notée les champs "latitude" et "longitude" en radians. Jusque là pas de souci...
Viens ensuite la requète qui permet en théorie de déterminer un rayon de recherche autour du domicile de la personne :
Bien entendu ça me renvoie 0 résultats, ça aurait été trop simple
Je penchais pour un souci de chiffres entiers (me rapelle plus le terme exact, quand 16000 est plus grand que 130000). Bref j'en arrive à créer cette requète :
Mais j'ai l'impression que ce qui viens perturber le tout c'est l'alias "proximite". J'ai essayé tout ce que je trouvais sur mon clavier avec des parenthèses partout, des ", des ', des `` mais j'obtiens ou aucun résultat ou bien alors la totalité
Quelqu'un aurait une idée pour me sortir de ce pétrin
---------------
Michael Schumacher laissera une trace immense dans l'histoire de notre sport. Il en a aussi laissé une belle sur les flancs de ma Williams à Adélaïde, en 1994...