#sql #wordpress #geolocation
#sql #wordpress #геолокация
Вопрос:
Ребята, есть идеи, почему этот запрос не возвращает никаких результатов?
Я пытаюсь получить строки из базы данных на основе расстояния между координатами.
SELECT DISTINCT p.ID, p.post_title, map_lat.meta_value as locLat, map_lng.meta_value as locLong, ( 6371 * acos( cos( radians( '-25.427603111334' ) ) * cos( radians( map_lat.meta_value ) ) * cos( radians( map_lng.meta_value ) - radians( '' ) ) sin( radians( '-25.427603111334' ) ) * sin( radians( map_lat.meta_value ) ) ) ) AS distance FROM wpby_posts p INNER JOIN wpby_postmeta map_lat ON p.ID = map_lat.post_id INNER JOIN wpby_postmeta map_lng ON p.ID = map_lng.post_id WHERE 1 = 1 AND p.post_type = 'listar' AND map_lat.meta_key = 'latitude' AND map_lng.meta_key = 'longitude' HAVING distance lt; '1000' ORDER BY distance ASC
Все, что я получаю, это:
gt;gt;gt; Query OK, 0 rows affected
Любая помощь будет высоко оценена
Комментарии:
1. пометьте свою базу данных
2. Предположительно потому, что нет записей, соответствующих вашим условиям фильтрации/присоединения?
3. Нет. Записи есть
4. Измените ваши ВНУТРЕННИЕ СОЕДИНЕНИЯ на ВНЕШНИЕ СЛЕВА и удалите предложения WHERE/HAVING — теперь ваш запрос должен возвращать строки. Затем добавьте каждый элемент по одному, каждый раз повторяя запрос, пока не выяснится, какой элемент отфильтровывает ваши записи
5. Я понял, что это та часть, которая вычисляет расстояние, которая не работает. Без этого я получаю все строки. Хотя не знаю, как это исправить. Я пытаюсь найти способ выполнить этот расчет. это и есть суть запроса.