PHP MySQLi - ГДЕ "рассчитанное значение меньше, чем" не работает - PullRequest
1 голос
/ 06 апреля 2019

Я получил этот код:

$userquery = mysqli_query($con, "SELECT *, 
                    ( 3959 * acos( cos( radians('$latme') ) *
                cos( radians( latitude ) ) *
                cos( radians( longitude ) -
                radians('$lonme') ) +
                sin( radians('$latme') ) *
                sin( radians( latitude ) ) ) )
                AS distance
FROM `eintrag` 
ORDER BY distance ASC");

и получайте результаты с расстояния от 0,1 до 999.

Теперь, когда я пытаюсь получить результаты только при расстоянии ниже 20:

FROM `eintrag` 
WHERE distance < 20
ORDER BY distance ASC");

тогда это не работает, я не получаю никаких результатов.

Как это сделать правильно?

Заранее спасибо

1 Ответ

1 голос
/ 06 апреля 2019

Вы не можете повторить псевдоним, определенный в предложении where в том же уровне. Но MySQL имеет перегруженный оператор HAVING, который вы можете использовать:

FROM `eintrag` 
HAVING distance < 20
ORDER BY distance

Единственными двумя другими вариантами здесь будут повторение всей формулы Хаверсайна в предложении WHERE (безобразно) или перенос текущего запроса с последующим использованием подзапроса (менее производительного).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...