- Home
- Categorie
- Coding e Sistemistica
- PHP
- Group by problema
-
Group by problema
Ciao a tutti,
sono alle prese con una query che mi restituisce i negozi più vicini tramite il calcolo della latitudine e longitudine.[PHP]
$latitude = "41.8239876";
$longitude = "12.4342634";$query ="SELECT (6371 * acos(cos(radians(".$latitude."))
* cos(radians(lat))
* cos(radians(lng)
- radians(".$longitude."))
+ sin(radians(".$latitude."))
* sin(radians(lat))))
AS distanza, id_negozio, negozio, indirizzo, citta
FROM lista_negozi
HAVING distanza < 50
ORDER BY distanza ASC LIMIT 0 , 20";
[/PHP]La query sembra funzionare discretamente, in quanto sono questi sono i risultati che ottengo.
id - negozio - distanza
2 - Negozio 1 - 6.68 Km
11 - Negozio 2 - 7.07 Km
2 - Negozio 1 - 8.36 Km
11 - Negozio 2 - 19.03 Km
2 - Negozio 1 - 19.18 Km[PHP]
$query ="SELECT (6371 * acos(cos(radians(".$latitude."))
* cos(radians(lat))
* cos(radians(lng)
- radians(".$longitude."))
+ sin(radians(".$latitude."))
* sin(radians(lat))))
AS distanza, id_negozio, negozio, indirizzo, citta
FROM lista_negozi
GROUP BY id_negozio
HAVING distanza < 50
ORDER BY distanza ASC LIMIT 0 , 20";
[/PHP]Ma aggiungendo 'GROUP BY' invece di filtrare i dati in questo modo:
2 - Negozio 1 - 6.68 Km
11 - Negozio 2 - 7.07 KmMi restituisce questi dati:
id - negozio - distanza
11 - Negozio 2 - 30.39 Km
2 - Negozio 1 - 48.7 KmChe sono i negozi con la distanza più lontana.
ringrazio tutti anticipatamente
-
Ciao cla83 sei riuscito a risolvere il tuo problema?
io userei la prima query e successivamente lavorerei sul codice php
-
@PietroR said:
Ciao cla83 sei riuscito a risolvere il tuo problema?
io userei la prima query e successivamente lavorerei sul codice phpCiao PietroR,
grazie per la risposta.Si ho risolto, ma diversamente, togliendo il GROUP BY, in quanto il sistema
era più articolato di quello che ho mostrato.Ho risolto in pratica aggiungendo un campo CONTEGGIO nel database e nella query
ho semplicemente aggiunto 'ORDER BY conteggio', in quanto ogni volta che viene
compilato il form, quel 'NEGOZIO' avrà '+1' e quindi escluso nella seconda compilazione.Esempio:
id - negozio - distanza conteggio
2 - Negozio 1 - 6.68 Km 1 (1° utente compila il form)
11 - Negozio 2 - 7.07 Km 1 (2° utente compila il form)
2 - Negozio 1 - 8.36 Km 1 (3° utente compila il form)