У меня есть этот mysql код, который работает нормально, но я хотел знать, как можно избежать вычисления RAW-данных дважды, вот мой код
SELECT `users`.*, ( 3959 * ACOS(COS(RADIANS(43.9743)) *
COS(RADIANS(locations.lat)) *
COS( RADIANS(-75.9122) - RADIANS(locations.LONG)) +
SIN(RADIANS(43.9743)) *
SIN(RADIANS(locations.lat) )) ) AS distance
FROM `users`
INNER JOIN `addresses` ON `users`.`id` = `addresses`.`user_id`
LEFT JOIN `locations` ON `addresses`.`zip` = `locations`.`zip`
WHERE `type` = 'doctor'
AND ( 3959 * ACOS(COS(RADIANS(43.9743)) * COS(RADIANS(locations.lat)) *
COS( RADIANS(-75.9122) - RADIANS(locations.LONG)) +
SIN(RADIANS(43.9743)) * SIN(RADIANS(locations.lat) )) ) < 100
AND `users`.`deleted_at` IS NULL
ORDER BY distance ASC
LIMIT 15 OFFSET 0
, как вы можете видеть, я использую это вычисление дважды ( 3959 * ACOS(COS(RADIANS(43.9743)) * COS(RADIANS(locations.lat)) * COS( RADIANS(-75.9122) - RADIANS(locations.LONG)) + SIN(RADIANS(43.9743)) * SIN(RADIANS(locations.lat) )) )
для И и SELECT оператора.
Я пытался получить AND distance < 100
, но я получил ошибку, говоря, что столбец не существует.
Ценю любую помощь