Используйте внутреннее соединение с длинным запросом mysql lat в php

У меня есть этот запрос mysql, чтобы сделать радиус поиска, используя Lat и Long в качестве центральной позиции:

$query = sprintf("SELECT Title, DateTime, ( 6371393 * acos( cos( radians('%s') ) * cos( radians( Lat ) ) * cos( radians( Lon ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( Lat ) ) ) ) AS distance FROM Locations HAVING distance < '%s' ORDER BY distance",
    mysql_real_escape_string($center_lat),
    mysql_real_escape_string($center_lng),
    mysql_real_escape_string($center_lat),
    mysql_real_escape_string($radius));

Я ввожу широту, долготу и радиус в метрах. Затем выводится заголовок и дата и время, но мне также нужно получить имя пользователя из другой таблицы, используя идентификатор.

Таблицы:

Местоположение

| Title | DateTime | UserID |

Пользователи

| UserID | Username |

Есть ли способ использовать этот запрос с внутренним соединением или левым соединением? Я также открыт для других способов приблизиться к этому для лучшей оптимизации.


person SReca    schedule 03.02.2013    source источник


Ответы (1)


Вы можете использовать внутреннее соединение:

select l.title, l.datetime, u.username
from location l inner join users u on l.userid = u.userid
person Abubakkar    schedule 03.02.2013
comment
Я уже пробовал это, но потом понял, что в столбцах для получения расстояния есть широта и долгота вместо l.Lat и l.Lon. Спасибо - person SReca; 03.02.2013