在php中使用内部连接和mysql lat long查询

时间:2013-02-03 15:45:57

标签: mysql left-join inner-join latitude-longitude

我有这个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));

我以米为单位输入Lat,Long和radius。然后输出是标题和日期时间,但我还需要使用id从另一个表中获取用户名。

表格是:

位置

| Title | DateTime | UserID |

用户

| UserID | Username |

无论如何使用内部加入或左连接的查询?我也愿意采用其他方式来实现最佳优化。

2 个答案:

答案 0 :(得分:1)

select title, datetime, username
from location, users
where location.userid = users.userid  

select title, datetime, username
from location
join users
on location.userid = users.userid

答案 1 :(得分:0)

您可以使用内部联接:

select l.title, l.datetime, u.username
from location l inner join users u on l.userid = u.userid