es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Pueden haber algunas razones por las cuales esta consulta no está devolviendo resultados. Aquí hay algunas posibles explicaciones:

    • Los valores de latitud y longitud usados en la consulta podrían no coincidir con ningún registro en la base de datos. Verifique que los valores usados en la función radians() coincidan con los valores reales de latitud y longitud en la tabla wpby_postmeta.
    • La cláusula 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áusula HAVING para ver si hace alguna diferencia.
    • Asegúrese de que la tabla wpby_postmeta contenga valores de latitud y longitud para el tipo de publicación listar. Si los valores de latitud y longitud están almacenados en una tabla diferente o no están asociados con el tipo de publicación listar, 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.

Comments are closed.