У моего делового партнера и у меня возникают проблемы с выбором из представления MySQL, в котором есть предложение HAVING.SELECT from MySQL View С предложением HAVING возвращает пустой набор результатов
Запрос просто выбирает несколько полей из представления, динамически определяет расстояние с несколькими вычислениями и псевдонизирует его как «расстояние» - затем ограничивает результаты теми строками с расстоянием, меньшим, чем поставляемая переменная.
Расстояние вычисляется по формуле Haversine, на который ссылается Google Maps: https://developers.google.com/maps/articles/phpsqlsearch
Вот что я знаю:
1) Когда HAVING пункт удаляется из запроса, он возвращает все результаты в представлении успешно, , включая рассчитанное «расстояние» для каждой строки
2) Когда к запросу добавляется предложение HAVING, оно возвращает пустой r esult набор
3) Мы также пытались замены переменной в HAVING предложении к статическому числа - это также возвращается пустой результирующий набор
содержимое этого зрения, кажется, не имеет значения, так как все работает без HAVING пункта.
Вот запрос:
SELECT
restaurantName,
restaurantID,
locationID,
locationCity,
locationState,
locationAddress,
locationLatitude,
locationLongitude,
(3959 * acos(cos(radians('%s')) * cos(radians(locationLatitude)) * cos(radians(locationLongitude) - radians('%s')) + sin(radians('%s')) * sin(radians(locationLatitude)))) AS distance
FROM newView
HAVING distance < '%s'
ORDER BY distance
Помните, что вид вычисляет «расстояние» для каждой выбранной строки отлично без HAVING пункта, поэтому мы убеждены, что проблема лежит там ... когда мы вынимайте его, все работает, но возвращается каждая строка в представлении.
Любые идеи, почему предложение HAVING возвращает пустой набор? Является ли предложение HAVING несовместимым с представлениями?
Спасибо за ваш ответ. Я использовал идею здесь (производную таблицу) с предложением HAVING вместо предложения where, и теперь он работает отлично. Большое спасибо. –