SQL Server - Ubicación más cercana a una tabla de puntos

 
Vista:
sin imagen de perfil

Ubicación más cercana a una tabla de puntos

Publicado por Geison (2 intervenciones) el 20/01/2022 06:12:30
Hola a todos, necesito de su inmensa sabiduría para resolver este ejercicio, le he echado cabeza y no he podido resolverlo, un ejercicio en sql server.
Tengo 2 tablas, ambas con geometría de puntos. La primera tabla contiene la información del punto (id, actividad, geometría...) y la segunda es de estaciones de buses (id, nombre, geometría...). Necesito realizar una consulta que me arroje 3 columnas: el ID de la primera tabla (id_punto), el ID de la estación de bus más cercana a los puntos de la primera tabla y la tercer columna que indique cuál es la distancia entre ellos.

Para esa consulta usé el siguiente código:

select a.gid as id_actividad,b.gid as id_estacion, ST_distance(a.geom,b.geom) as c
from act_economicas as a,estaciones_mio as b
order by 1,3 asc

El problema es que como hay 58 estaciones de buses, el resultado de la consulta es el calculo de 58 distancias a cada punto de la primer tabla, y yo solo necesito obtener el más cercano a cada dato de la primer tabla, la más cercana.

Cómo hacer esa consulta?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ubicación más cercana a una tabla de puntos

Publicado por Isaias (4558 intervenciones) el 20/01/2022 16:28:26
¿Y donde esta tu JOIN de ambas tablas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ubicación más cercana a una tabla de puntos

Publicado por Geison (2 intervenciones) el 20/01/2022 17:12:15
Hola, gracias por contestar rápido.
Ya resolví el problema, usando "DISTINCT" y ordenando la columna distancia pude filtrar la búsqueda como quería:

select DISTINCT on(a.gid)a.gid as id_actividad,
b.id_estacio as id_estacion,
ST_distance(a.geom,b.geom) as Distancia
From act_economicas as a,
estaciones_mio as b
order by 1,3 asc

Sabes si hay que cerrar el hilo(?) o algo así?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ubicación más cercana a una tabla de puntos

Publicado por Isaias (4558 intervenciones) el 21/01/2022 16:22:56
No, lo curioso es que te haya dado un resultado satisfactorio, NO EXISTE UN JOIN entre ambas tablas, estas obteniendo TODOS los registros de ambas tablas, simplemente con un order by
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar