Mam bazę 30 tys rekordów, każdy rekord ma dane geograficzne (szerokość i długość - dziesiętną) jak zrobić zapytanie które pokaże listę posortowanych rekordów według dystansu.
Czyli najpierw obliczamy dystans dla każdego rekordu na podstawie danych lokalizacyjnych. potem sortujemy.
żeby zobrazować.
mam listę kin w Polsce użytkownik normalnie ogląda listę posortowaną według daty dodana. Ale jak w swoich ustawieniach konta poda swoje dane geograficzne to na ich podstawie będzie mógł zobaczyć co jest najbliżej jego lokalizacji.
na razie wyklułem coś takiego:
function m_listdatabase ($category) { return $this->MysqlGetArray("SELECT *, ROUND( ACOS( SIN( RADIANS( lat ) ) * SIN( 19.0237800 ) + COS( RADIANS( lat ) ) * COS( 50.2648900 ) * COS( RADIANS( lat ) - 50.2648900 ) ) * 6371.01, 2 ) AS distance FROM `database` WHERE act=1 AND cat = '".$this->sqlFiltr($category)."' GROUP by id ORDER by distance DESC LIMIT ".model_settings::m_get_value(34)." "); }
MUSI BYC TO ZAPYTANIE BEZ INGERENCJI PHP.