2010-05-22 3 views
0

У меня есть запрос sql, который выполняет LEFT JOIN на 2 таблицах, в которых некоторые из столбцов неоднозначны. Я могу префикс объединенных таблиц, но когда я пытаюсь префикс одного из столбцов из таблицы в предложении FROM, он сообщает мне Неизвестный столбец. Я даже пытался дать этой таблице псевдоним вроде так ... Из точек AS p и используя «p» для префикса таблиц, но это тоже не сработало. Может кто-то сказать мне, что я делаю неправильно. Вот мой запрос:Псевдоним таблицы - столбец unkown в списке полей

SELECT point_title, point_url, address, city, state, zip_code, 
    phone, `points`.`lat`, `points`.`longi`, featured, 
    kmlno, image_url, category.title, category_id, 
    point_id, lat, longi, reviews.star_points, reviews.review_id, 
    count(reviews.point_id) as totals 
FROM (SELECT *, 
      (3959 * acos(cos(radians('37.7717185')) * cos(radians(lat)) 
       * cos(radians(longi) - radians('-122.4438929')) 
       + sin(radians('37.7717185')) * sin(radians(lat)))) AS distance 
     FROM points 
     HAVING distance < '25') as distResults 
LEFT JOIN category USING (category_id) 
LEFT JOIN reviews USING (point_id) 
    WHERE (point_title LIKE '%Playgrounds%' OR category.title LIKE '%Playgrounds%') 
GROUP BY point_id 
ORDER BY totals DESC, distance 
    LIMIT 0, 10 

Вот схема для таблиц, участвующих:

Очки таблицы: поле Тип Null По умолчанию Комментарии point_id INT (11) Нет
point_title VARCHAR (255) Нет
category_id INT (11) нет
текст описания не
нет point_url VARCHAR (255) нет
адрес VARCHAR (255) нет
город VARCHAR (255) Нет
состояние VARCHAR (255) Нет
zip_code VARCHAR (255) Нет
телефон VARCHAR (255) Нет
файла VARCHAR (255) Нет
лат VARCHAR (25) Нет
Longi не VARCHAR (25) нет
user_id INT (2) нет 0
признакам INT (1) нет 0
статус INT (1) нет 1
kmlno Int (2) нет 0
lastupdate VARCHAR (255) нет
IMAGE_URL VARCHAR (255) Нет

Отзывы таблице: поле Тип Null По умолчанию Комментарии review_id INT (11) Нет
обзор INT (1) Нет 0
review_title VARCHAR (255) Нет
review_desc текст Нет
star_points INT (11) Нет 0
user_id INT (11) Нет 0
point_id INT (11) Нет
лат VARCHAR (25) Нет
Longi VARCHAR (25) Нет
lastupdate VARCHAR (255) Нет
статус VARCHAR (1) Нет г

Категория Таблица: поле Тип Null По умолчанию Комментарии category_id INT (11) Нет
Название VARCHAR (255) Нет
описание текста Нет
файла VARCHAR (255) нет
имя_образа VARCHAR (255) нет
статус INT (1) нет 0
lastupdate VARCHAR (255) нет

+0

В какой колонке вы столкнулись с проблемой? Можете ли вы отформатировать свой запрос, чтобы его можно было прочитать? –

+0

Я понял. Вместо того, чтобы предварять столбцы lat и longi «точками», мне нужно было предикатировать с помощью «distResults», поскольку это используется псевдоним таблицы. Спасибо всем за помощь. – Jason

ответ

0

Не видя вашей схемы, трудно точно знать, в чем проблема. Но я вижу одну проблему - переместите расстояние HAVING < 25 от внутреннего выбора до внешнего выбора. Имя «distance» недоступно для внутреннего выбора. Я также изменил HAVING на WHERE, так как не было GROUP BY.

SELECT point_title, point_url, address, city, state, zip_code, 
    phone, `points`.`lat`, `points`.`longi`, featured, 
    kmlno, image_url, category.title, category_id, 
    point_id, lat, longi, reviews.star_points, reviews.review_id, 
    count(reviews.point_id) as totals 
FROM (SELECT * FROM (SELECT *, 
     (3959 * acos(cos(radians('37.7717185')) * cos(radians(lat)) 
      * cos(radians(longi) - radians('-122.4438929')) + 
      sin(radians('37.7717185')) * sin(radians(lat)))) AS distance 
     FROM points) AS distResultsInner 
     WHERE distance<25)) AS distResults 
LEFT JOIN category USING (category_id) 
LEFT JOIN reviews USING (point_id) 
WHERE (point_title LIKE '%Playgrounds%' 
    OR category.title LIKE '%Playgrounds%') 
GROUP BY point_id ORDER BY totals DESC, distance 
LIMIT 0 , 10 
+0

Ok спасибо, но я получаю эту ошибку с помощью вышеуказанного запроса: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования вблизи '). AS distResults. LEFT JOIN category USING (category_id) LEFT JOIN review U' в строке 11 – Jason

+0

Оригинальный пост, обновленный для отображения схемы – Jason

+0

Да, произошла ошибка , Я обновил запрос. – mdma

Смежные вопросы