Salve a tutti, ho la seguente query che mi preleva dei dati da una tabella in base alla distanza da un punto (vengono fornite le coordinate e viene calcolata la distanza).
La tabella ha due attributi (data_inizio e data_fine che non è rilevante) per ogni elemento e vorrei un ordinamento fatto in questo modo:Codice:SELECT *, 3956 * 2 * ASIN(SQRT( POWER(SIN(($origLat - abs(latitudine))*pi()/180/2),2) +COS($origLat*pi()/180 )*COS(abs(latitudine)*pi()/180) *POWER(SIN(($origLon-longitudine)*pi()/180/2),2))) as distance FROM tabella1 WHERE NOW() <= data_fine and longitudine between ($origLon-$dist/abs(cos(radians($origLat))*69)) and ($origLon+$dist/abs(cos(radians($origLat))*69)) and latitudine between ($origLat-($dist/69)) and ($origLat+($dist/69)) having distance < $dist ORDER BY distance limit 100
ELEMENTI | DATA_INIZIO| DATA_ FINE | DISTANZA (risultato della query sopra)|
elemento1 |02-06-2015 |-----------------| 4km|
elemento2 | 03-06-2015|-----------------| 3km|
elemento3 | 01-06-2015| ----------------| 10km|
la query dovrebbe ordinarmi prima in base alla distanza in suddivisioni di 5km e all'interno di esse per data, cioè l'output dovrebbe essere:
(Elementi entro i 5km per data)
elemento2
elemento1
(Elementi entro i 10km per data)
elemento3
E così via..
Si può fare?

LinkBack URL
About LinkBacks
