Ho 2 tabelle come gli esempi di seguito, towns
e things
, e ho bisogno di ottenere un elenco di città che hanno cose vicine che sono entro la distanza x
da quella registrazione cittadina. Latitudine e longitudine verranno utilizzate per calcolare la distanza.Seleziona città che hanno cose vicine
Ho guardato alcune altre domande e sono riuscito a ottenere il record da things
per una sola città specificata, ma non riesco a pensare come ottenere un elenco di tutte le città che hanno vicino things
che sono più vicini di quanto x
distanza loro.
Essere in grado di ordinare le città risultanti per numero di cose vicine entro la distanza x
sarebbe un bonus.
TOWNS
+--------+----------+---------+---------+
| townId | townName | townLat | townLng |
+--------+----------+---------+---------+
| 1 | town a | 1.5 | 1.9 |
| 2 | town b | 1.4 | 3.8 |
| 3 | town c | 2.3 | 2.7 |
| 4 | town d | 3.2 | 1.6 |
| ... | ... | ... | ... |
+--------+----------+---------+---------+
THINGS
+---------+-----------+----------+----------+
| thingId | thingName | thingLat | thingLng |
+---------+-----------+----------+----------+
| 1 | thing a | 2.1 | 3.1 |
| 2 | thing b | 1.1 | 2.3 |
| 3 | thing c | 3.2 | 0.2 |
| 4 | thing d | 1.3 | 1.1 |
| ... | ... | ... | ... |
+---------+-----------+----------+----------+
Grazie in anticipo
Il grosso problema qui sta usando la formula di Haversine per determinare la distanza tra due serie di coppie di latitudine/longitudine. Hai già lavorato su questo? –
Con questo schema qualsiasi soluzione diventerà molto lenta per più di qualche migliaio di righe. In pratica devi calcolare la distanza da ** ogni ** città a ** ogni ** cosa. – Vatev
Non ancora - Non so da dove cominciare. Non riesco a capire come applicare la formula alle coordinate di entrambe le tabelle nella singola query. – user2959229