2013-12-04 4 views
0

У меня возникла проблема с запуском этого запроса. Он должен храниться как процедура, которую я делаю. То, что я не могу понять, это то, о чем упоминает пара псевдонимов.SQL Query Alias ​​Объяснение

Ссылка на полный Источник: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 

The Issue I Am Having: In the actual select statement it almost immediately refers to orig.lat and dest.lat, also orig.lon and dest.lon. I can't find these references anywhere. What are these referring to?

При попытке выполнения этого запроса я получаю сообщение об ошибке:

"Unknown Column orig.lat"

+0

, так как «origin» является псевдонимом для «пользователей» таблицы, я предполагаю, что «orig» должен быть «origin» – BWS

+0

Я попытался изменить это, теперь я получаю ошибку # 1054 - Неизвестный столбец 'origin.lat' в «списке полей», который аналогичен предыдущему. Благодарю за помощь, кстати! – mcbeav

+0

Простое исправление, я понял, спасибо! – mcbeav

ответ

1

Ваши таблицы имеют псевдоним в качестве адресата и источника по адресу users destination и users origin.

Предположительно, вы хотите заменить orig.lat -dest.lat на origin.lat -destination.lat. Вы также сделаете то же самое с другими ссылками.

+0

Я получаю ошибку # 1054 - Неизвестный столбец origin.lat в списке полей, который является тем же, что и раньше, спасибо за помощь, кстати! – mcbeav

+0

Простое исправление, я получил его, спасибо за помощь! – mcbeav