我有两个MySQL表:
CREATE TABLE IF NOT EXISTS `wp_zipcode` ( `zip` int(5) NOT NULL AUTO_INCREMENT, `lat` float(10,6) NOT NULL, `lng` float(10,6) NOT NULL, PRIMARY KEY (`zip`) )
和
CREATE TABLE IF NOT EXISTS `wp_events` ( `EventID` int(11) NOT NULL, `Event` varchar(256) NOT NULL, `Zip` int(11) NOT NULL,
不幸的是,我无法改变wp_events(它会随着时间的推移被新数据覆盖)而且我正在对用户进行最近事件的“距离”搜索。我正在使用Google的示例found here
( 3959 * acos( cos( radians(34.070358) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-118.349258) ) + sin( radians(34.070358) ) * sin( radians( lat ) ) ) ) AS distance FROM wp_events HAVING distance < 25 ORDER BY distance LIMIT 0 , 20
我的问题是这样的:为了让算法工作,我需要有一个zip码的lng和lat,但是因为我在wp_events中搜索事件,有没有办法从wp_events中获取事件的zipcode并以某种方式(这是我的问题所在)从wp_zipcodes获取该特定邮政编码的相应lat和lng并返回到SQL语句以获得所需邮政编码附近的相应事件。
提前致谢
答案 0 :(得分:0)
您可以使用JOIN
,如下所示:
SELECT wp_events.EventId, wp_events.Event, wp_events.Zip, wp_zipcode.lat, wp_zipcode.lng
FROM wp_events
JOIN wp_zipcode ON wp_events.Zip = wp_zipcode.zip
答案 1 :(得分:0)
SELECT wp_events.*,
wp_zipcode.lat,
wp_zipcode.lng,
( 3959 * acos( cos( radians(34.070358) ) * cos( radians( wp_zipcode.lat ) ) * cos( radians( wp_zipcode.lng ) - radians(-118.349258) ) + sin( radians(34.070358) ) * sin( radians( wp_zipcode.lat ) ) ) ) AS distance
FROM wp_events
LEFT JOIN wp_zipcode
ON wp_zipcode.zip = wp_events.Zip
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20