Как правильно вкладывать несколько операторов SELECT в MySQL? - PullRequest
0 голосов
/ 17 августа 2011

У меня следующий запрос:

SELECT 
locations.*, 
(SELECT COUNT(id) FROM location_scores WHERE location_id = locations.id) AS total_votes, 
(SELECT AVG(location_score) FROM location_scores WHERE location_id = locations.id) AS rating, 
(SELECT COUNT(id) FROM location_views WHERE location_id = locations.id) AS total_views, 
(SELECT COUNT(id) FROM location_procedures WHERE location_id = locations.id) AS total_procedures, 
(SELECT ((ACOS(SIN(32.9063840 * PI() / 180) * SIN(location_latitude * PI() / 180) + COS(32.9063840 * PI() / 180) * COS(location_latitude * PI() / 180) * COS((-96.8590890 - location_longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) FROM locations) AS distance
FROM locations 
WHERE distance <= '5' 
AND locations.id IN ('57', '57', '57', '57', '57', '57', '57', '57', '57', '57', '68', '68', '70', '73', '73', '76', '76', '76', '76', '76', '77', '77')

Я получаю следующую ошибку:

Неизвестное расстояние до столбца в выражении where

Ответы [ 2 ]

1 голос
/ 17 августа 2011

distance - это имя таблицы, а не столбца.

Поставьте AS column_name после этого последнего длинного подзапроса, тогда вы получите к нему что-то вроде.

WHERE distance.column_name <= 5

0 голосов
/ 17 августа 2011

расстояние выглядит как таблица.Упрощенный запрос:

SELECT (... FROM locations) AS distance

Может быть, вы забыли выражение where:

SELECT (... FROM locations WHERE location_id = locations.id) AS distance
...