我有一个现有的搜索工作正常。它正在搜索表1(俱乐部),但需要从表2(城镇)获得一些数据。要做到这一点,它会做两个表的INNER JOIN。MySql嵌套选择和内部联接
我现在试图将结果限制在距某个特定点的设定距离内。
这两个表都有称为纬度和经度的字段,但只有Towns值被填充,所以我需要在搜索中使用这些值。
其他几个字段在两个表中都使用相同的名称,所以我必须指出我的意思是哪个表(例如Towns.town_key)。
要进行距离搜索,我在内部嵌套中进行粗略的方框搜索,然后在外部嵌套中对其结果执行一个pythagoras公式。 (我不需要Haversine的准确性。)
无论我尝试什么,我都会在正面使用表名的字段上收到错误。不幸的是,尽管大量的阅读中,我不完全了解使用别名等
这里是我的搜索:
SELECT club_key, name, Towns.town_key, town_name, Clubs.address,
sqrt(((-32.380100 - Towns.latitude)*111.133)^2 + ((147.481400 -
Towns.longitude)*93.853)^2) AS dist FROM
(SELECT club_key, name, Towns.town_key, town_name, Clubs.address FROM Clubs
INNER JOIN Towns ON Clubs.town_key = Towns.town_key WHERE type = 'football'
AND Towns.latitude BETWEEN -32.829761 AND -31.930439 AND Towns.longitude BETWEEN 146.948951 AND 148.013849) AS T1
WHERE dist < 50 ORDER BY 6,2
最新的错误是: 无法运行查询:未知列“城镇.town_key'in'field list'
在此之前,它反对在内部和外部选择中使用的纬度和经度字段。
有什么联系T1.town_key到Towns.town_key好吗?而T1.address到Clubs.address? – user2605793
试过了。现在得到错误:无法运行查询:'字段列表'中的未知列'T1.latitude' – user2605793
Towns表中是否存在纬度列?如果是这样,那么上面的答案应该工作.... –