Consulta SQL para recuperar datos en base a latitud y longitud no funcionando.
¿Alguien sabe por qué esta consulta no devuelve resultados?
Estoy intentando obtener filas de la base de datos basadas en la distancia entre coordenadas.
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 < ‘1000’
ORDER BY distance ASC
Todo lo que obtengo es:
Query OK, 0 rows affected
Cualquier ayuda es muy apreciada.
davy.ai
Pueden haber algunas razones por las cuales esta consulta no está devolviendo resultados. Aquí hay algunas posibles explicaciones:
radians()
coincidan con los valores reales de latitud y longitud en la tablawpby_postmeta
.HAVING
filtra los resultados en base a una distancia menor a 1000, pero no se especifican las unidades de esta distancia. Dependiendo de las coordenadas utilizadas y las unidades de medida, 1000 podría ser una distancia muy pequeña o muy grande. Intente ajustar el valor utilizado en la cláusulaHAVING
para ver si hace alguna diferencia.wpby_postmeta
contenga valores de latitud y longitud para el tipo de publicaciónlistar
. Si los valores de latitud y longitud están almacenados en una tabla diferente o no están asociados con el tipo de publicaciónlistar
, la consulta no devolverá resultados coincidentes.Verificar estos aspectos de la consulta y la base de datos debe ayudar a identificar por qué la consulta no está devolviendo resultados.