我的代碼如下,應該可以工作,但由於某種原因它不能識別連接語句中的wm_stores.lat。有人有主意嗎?確定距離MySQL
SELECT wm_dcs.dc_id, wm_stores.store_id
FROM wm_dcs
JOIN wm_stores
ON wm_stores.lat BETWEEN wm_dcs.lat - (250.0/69.0)
AND wm_dcs.lat + (250.0/69.0)
AND wm_stores.lon BETWEEN wm_dcs.lon - (250.0/(69.0 * COS(RADIANS(wm_dcs.lat))))
AND wm_dcs.lon + (250.0/(69.0 * COS(RADIANS(wm_dcs.lat))))
AND (69.0 * DEGREES(ACOS(COS(RADIANS(wm_dcs.lat) * COS(RADIANS(stores.latitude))
* COS(RADIANS(dc.longitude - stores.longitude))
+ SIN(RADIANS(dc.latitude))
* SIN(RADIANS(wm_stores.lon)))))) <= 250.0;
不同的代碼版本:
set @dc_lat = 40.811973 ;
set @dc_lon = -73.946299 ;
select wm_stores.store_id,
(3959 * acos(cos(radians(@dc_lat)) * cos(radians(wm_stores.lat))
* cos(radians(wm_stores.lon) - radians(@dc_lon)) + sin(radians(@dc_lat))
* sin(radians(wm_stores.lat)))) AS distance
from wm_stores
having distance <= 250
order by distance asc;
請始終包括確切的錯誤信息和表定義 –
此外,您還可以給表表模式嗎?據我們所知,'wm_stores.lat'實際上並不存在 – DaveyBoy
錯誤消息 - 'on子句'中的未知列'stores.latitude' –