SQL查询别名说明

时间:2013-12-04 21:13:53

标签: mysql sql stored-procedures alias procedure

我遇到运行此查询的问题。它应该存储为我正在做的程序。我无法弄清楚的是几个别名所指的是什么。

链接到完整来源: http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL

代码:

CREATE PROCEDURE geodist (IN userid int, IN dist int)

BEGIN

DECLARE mylon double;
DECLARE mylat double;
DECLARE lon1 float;
DECLARE lon2 float;
DECLARE lat1 float;
DECLARE lat2 float;

SELECT longitude, latitude into mylon, mylat from users WHERE id=userid limit 1;

SET lon1 = mylon-dist/abs(cos(radians(mylat))*69);
SET lon2 = mylon+dist/abs(cos(radians(mylat))*69);
SET lat1 = mylat-(dist/69);
SET lat2 = mylat+(dist/69);


SELECT destination.*, 3956 * 2 * ASIN(SQRT( POWER(SIN((orig.lat -dest.lat) * pi()/180 / 2), 2) +COS(orig.lat * pi()/180) * COS(dest.lat * pi()/180) *POWER(SIN((orig.lon -dest.lon) * pi()/180 / 2), 2) )) AS distance FROM users destination, users origin WHERE origin.id=userid
and destination.longitude between lon1 and lon2 and destination.latitude between lat1 and lat2 
having distance < dist ORDER BY distance limit 10;

END
  

我遇到的问题:在实际的select语句中差不多   立即指orig.lat和dest.lat,也是orig.lon和   dest.lon。我无法在任何地方找到这些参考。这些是什么   指的是?

当我尝试运行此查询时出现错误:

  

“Unknown Column orig.lat”

1 个答案:

答案 0 :(得分:1)

您的表格被定位为users destinationusers origin的目的地和来源。

据推测,您希望将orig.lat -dest.lat替换为origin.lat -destination.lat。您也可以对其他参考文献进行相同的操作。