Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1980 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Between sur un Alias ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Between sur un Alias ?

n°1340887
Syl_83
Already in the legend...
Posté le 06-04-2006 à 18:08:17  profilanswer
 

Je me voit encore bloqué avec la mise au point de mon moteur de géolocalisation [:brainbugs]
 
 
Mais là c'est pour une connerie, enfin je crois...je penche sur une erreur d'orthographe mais pas moyen de trouver où [:petrus75]
 
 
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 :
 

Code :
  1. 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 'proximite' BETWEEN '0' AND '200'


 
 
Bien entendu ça me renvoie 0 résultats, ça aurait été trop simple [:aras qui rit]
 
 
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 :
 

Code :
  1. 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 (('proximite' > 0) AND ('proximite' < 200))


 
 
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 [:brainbugs] ??


---------------
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...
mood
Publicité
Posté le 06-04-2006 à 18:08:17  profilanswer
 

n°1340896
Beegee
Posté le 06-04-2006 à 18:24:43  profilanswer
 

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';
 
:D

n°1340897
smaragdus
whores, drugs & J.S. Bach
Posté le 06-04-2006 à 18:31:59  profilanswer
 

C'est un HAVING qu'il faut, pas un WHERE  [:zytrafumay]
 
De plus et si ton sgbd le permet, pour la clareté et maintenabilité il vaut mieux faire une fonction stockée.


Message édité par smaragdus le 06-04-2006 à 18:33:48
n°1340906
Syl_83
Already in the legend...
Posté le 06-04-2006 à 18:48:47  profilanswer
 


 
 
C'est bourrin, très bourrin même...mais ça fonctionne [:aras qui rit]
 
 
C'est quand qu'on se marie [:brainbugs] ??
 
 
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" [:markdavis]


---------------
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...
n°1341037
smaragdus
whores, drugs & J.S. Bach
Posté le 06-04-2006 à 22:44:33  profilanswer
 

Syl_83 a écrit :


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" [:markdavis]


 
non c'est pas ça. Une fonction stockée, c'est...
 
 
...une fonction stockée dans la db [:catharsis]  
 
et sinon pour ta requete, il faut utilisé un HAVING :

Citation :


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 HAVING proximite BETWEEN 0 AND 200


 
c'est quand même plus clair  :sarcastic:
 
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

Message cité 1 fois
Message édité par smaragdus le 06-04-2006 à 23:08:10
n°1341071
Syl_83
Already in the legend...
Posté le 06-04-2006 à 23:31:59  profilanswer
 

smaragdus a écrit :

non c'est pas ça. Une fonction stockée, c'est...
 
 
...une fonction stockée dans la db [:catharsis]  
 
ça sert d'ouvrir une doc sql


 
 
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 [:petrus75]
 
 
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 [:brainbugs]
 
 
Là j'ai eu beau lire la doc je n'ai rien trouvé de concluant :/
 
 
Enfin ça fonctionne, c'est déjà ça [:aras qui rit]


---------------
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...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Between sur un Alias ?

 

Sujets relatifs
création Alias mail AD + Exchange 2000Creation alias, sous domaine sous php
opérations sur des alias SQL[PostgreSQL] Alias de table et performance
alias sous tomcat [ok]BETWEEN vs LIMIT
référent pointeurs aliaspb de date avec BETWEEN
[java] ip alias en java ?easyphp! alias?
Plus de sujets relatifs à : Between sur un Alias ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR