|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : décembre 2010 Messages : 34 ![]() |
Bonjour @ tous.
Problème: - J'ai une base SQL possédant une table 'my_zip_codes' avec des champs, zip, lat, lon. lat et lon sont approximativement les épicentres du zip concerné. - J'ai deux vars $lat et $lon de quelque part dans ce pays. Question: quel query écrire pour trouver le zip le plus proche de ces lat lon ??? zip est la PRIMARY KEY $lat pourrait être: 40.81796646 $lon pourrait être: -73.04525757 Toute aide appréciée. Merci d'avance. Cordialement @ tous. -= Guy =- |
|
|
00
|
|
|
#2 | ||||||
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 435 ![]() |
Bonjour,
cela pourrait être Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : décembre 2010 Messages : 34 ![]() |
Ouuuppps!
Hard pour mes faibles connaissances en SQL. Je vais tester la version 'variables' qui me semble + appropriée à mon pb. J'avais pensé à un truc genre: Code :
Merci pour l'aide, j'update dés que j'ai essayé. Bonne journée. -= Guy =- PS: pour moi, bonne nuit... :-) |
||
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
salut helas et bienvenu gdlmus,
le sql d'access ressemblerait plutôt à ça: Code :
mais le pire dans cette formulation c'est qu'un cp n'a pas une couverture circulaire, loin de là, ce qui veut dire que cela risque de donner beaucoup d'erreur. je te conseille plutot la géolocalisation inversé de google maps dont philben à fournit un exemple de code que tu pourrais facilement adapter pour récupérer le cp. |
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : décembre 2010 Messages : 34 ![]() |
Bonjour et merci vodiem & helas,
J'ai essayé la solution de vodiem qui n'a pas fonctionné, erreur SQL. En creusant plus profond avec mr Google, j'ai trouvé cette petite ligne qui certainement pas parfaite pour les raisons évoquées, m'a quand même impressionnée après avoir testé sur une vingtaine de villes US. De toute façon on sait que l'on récupère des lat lon de la position du DSLAM du visiteur qui peut être jusqu'à 5.0+ Kms de distance de son domicile. Faut vivre avec et nous ne sommes pas le FBI... Dans un second temps je vais surement creuser aussi le rétroviseur de mr Google. Merci pour la suggestion. Code :
$query = sprintf("SELECT *, ( 3959 * acos( cos( radians( %s ) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians( %s ) ) + sin( radians( %s ) ) * sin( radians( lat ) ) ) ) AS distance FROM my_zip_codes ORDER BY distance LIMIT 0,5",$lat,$lon,$lat); Comme je dispose des lat lon de ces villes quelle est la requête SQL pour sélectionner dans un premier temps les 10 'Le Pin' pour enfin avoir la bonne grâce à ses lat lon...??? Merci de vos conseils et patiente avec un débutant SQL, pour le PHP, on se débrouille un peu. Cordialement @ tous. -= Guy =- |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
erreur SQL... t'es sur d'être dans le bon forum ?
n'empêche tu as raison la formulation mathématique n'est pas correct lat et lon ne sont pas des distances mais des angles en degré et effectivement en trigo sphérique cette formulation est plus juste. pour selectionner les 'Le Pin', sql de ce style: Code SQL :
SELECT * FROM my_zip_codes WHERE ville='Le Pin' |
|
|
00
|
|
|
#7 | ||
|
Invité régulier
![]() Inscription : décembre 2010 Messages : 34 ![]() |
Merci vodiem pour pour la réponse.
Il conviendrait cependant de lire la question en entier... ![]() Code :
J'ai déjà la moitié de la solution... Bon WE @ tous. -= Guy =- |
||
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
Citation:
![]() tu m'excuseras de faire un peu idiot mais ca me paraissait plus logique que te répondre : si les $lat & $lon sont des critères de sélection, la requete avec les distances te donnera forcement dans les enregistrements le bon cp avec le nom de la ville qui va avec... mais si tu veux filtrer les distances avec le nom de la ville un avant le order est suffisant. mySQL... heu... t'es vraiment pas dans le bon forum Guy
|
|
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : décembre 2010 Messages : 34 ![]() |
J'ai réalisé ma couennerie peu de temps après avoir posté.
Sorry
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com