|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : décembre 2007 Messages : 392 ![]() |
Bonjour,
Je fais le select suivant pour faisant un order a partir d'une fonction sql dans la BDD Code :
$sql = "SELECT *, get_distance($lat, $lng, lat, lng) AS proximite FROM menus WHERE proximite < 1000 ORDER BY proximite ASC"; Pourtant dans ce cas proximite n'est pas une colonne (AS) mais bien le resultat de la fonction? c'est bien cela? Merci de votre aide |
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
J'ai essayé un truc du genre :
Code :
SELECT *, count(id) as toto FROM `pts_gpx` HAVING toto > 1000 order by toto asc |
|
|
00
|
|
|
#3 | |
|
Membre habitué
![]() Inscription : décembre 2007 Messages : 392 ![]() |
Salut heretik25,
Avec HAVING j'obtiens le message d'erreur suivant: Citation:
|
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Apparemment, tu n'as pas les droits d'utiliser la fonction get_distance(). C'est une fonction sql que tu as toi même créée ?
Qu'est-ce qu'elle doit produire ? Une distance en 3d ? |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : décembre 2007 Messages : 392 ![]() |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : décembre 2007 Messages : 392 ![]() |
peut-etre que je l'ai mise a la mauvaise place. lorsque je suis dans PhPMyadmin, je clique sur la table concernee par mon select et j'inscrit la fonction dans le menu SQL. C'est bien comme cela que l'on doit faire?
|
|
00
|
|
|
#7 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
Pour créer ta fonction, tu ouvre ton requêteur sql et tu exécutes.
Moi aussi je calcul la distance en 3d mais j'ai fait ça côté php. Si tu désires la fonction n'hésite pas à demander. Cela me permet entre autre de générer un profil d'élévation ou de compter la distance du parcours. Ex de profil : http://partir-en-vtt.com/php/gpx/app...r_periples=305 Statistiques issues des données GPS : http://partir-en-vtt.com/php/gpx/ope...stats_periples
|
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Inscription : décembre 2007 Messages : 392 ![]() |
J'utilise aussi une fonction PHP pou calculer les distance mais dans mon cas present, je voudrais faire un classement a partir du resultat d'une fonction dans un SELECT et c'est la que ca se complique
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
|
|
|
00
|
|
|
#10 | ||
![]() ![]() |
Dans le WHERE et le ORDER BY, essaie de réutiliser la fonction complète. Et évite la guerre des étoiles !
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : décembre 2007 Messages : 392 ![]() |
Merci CinePhil mais j'ai un blocage par mon hebergeur pour utiliser les fonctions integrer dans la BDD.
J'ai fais ceci. le calcul est bon et donne les bon resultat mais le ORDER BY proximite ne fonctionne pas Voici mon code Code :
$result = "SELECT lat,lng,type,noms,totale, (3958*3.1415927*sqrt((lat-'.$lat.')*(lat-'.$lat.') + cos(lat/57.29578)*cos('.$lat.'/57.29578)*(lng-'.$lng.')*(lng-'.$lng.'))/180) AS proximite FROM menus WHERE id IN (".$id.") ORDER BY proximite ASC"; j'ai aussi essaye Code :
$result = "SELECT * FROM menus WHERE id IN (".$id.") ORDER BY (3958*3.1415927*sqrt((lat-'.$lat.')*(lat-'.$lat.') + cos(lat/57.29578)*cos('.$lat.'/57.29578)*(lng-'.$lng.')*(lng-'.$lng.'))/180) ASC"; Une idee? |
|
00
|
|
|
#12 |
![]() ![]() |
Tes variables sont des nombres, inutile de les mettre entre apostrophes. Par contre, tu auras peut-être besoin de les transformer en type équivalent au type de la colonne.
Quels sont les types des colonnes lat et lng ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#13 |
|
Membre habitué
![]() Inscription : décembre 2007 Messages : 392 ![]() |
Bonjour CinePhil,
Les colonnes sont du type decimal(10,6). Par contre j'ai retire les apostrophes comme tu me le disais et maintenant ca fonctionne. Merci beaucoup
|
|
00
|
Copyright © 2000-2012 - www.developpez.com