Hoy comencé a jugar con SpatiaLite y ya me topé con un problema.
Para cada ubicación de punto almacenada en tableOne, me gustaría seleccionar un punto más cercano (distancia lineal) de tableTwo.
Hasta ahora se me ocurrió una solución torpe que utiliza VIEW:
CREATE VIEW testview AS
SELECT
A.id ,
B.myValue,
Distance(A.Geometry, B.Geometry) AS distance
FROM tableOne AS A, tableTwo AS B
WHERE distance < 10000
ORDER BY A.Id, distance;
Y entonces:
SELECT * FROM testview
WHERE distance = (SELECT MIN(distance) FROM testview AS t WHERE t.id = testview.id)
Parece hacer el trabajo.
Dos preguntas:
¿Hay alguna manera de realizar dicha consulta sin crear una VISTA?
¿Hay alguna otra forma de optimizar esta consulta para un mejor rendimiento? En un escenario del mundo real, tableOne tendrá cientos de miles de registros, y tableTwo - 1.3 millones.