J'ai commencé à jouer avec SpatiaLite aujourd'hui et j'ai déjà rencontré un problème.
Pour chaque emplacement de point stocké dans tableOne, je voudrais sélectionner un point (distance linéaire) le plus proche de tableTwo.
Jusqu'à présent, j'ai trouvé une solution maladroite qui utilise 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;
Et alors:
SELECT * FROM testview
WHERE distance = (SELECT MIN(distance) FROM testview AS t WHERE t.id = testview.id)
semble faire le travail.
Deux questions:
Existe-t-il un moyen d'effectuer une telle requête sans créer de VUE?
Existe-t-il un autre moyen d'optimiser cette requête pour de meilleures performances? Dans un scénario réel, tableOne aura des enregistrements de plusieurs centaines de milliers de couples, et tableTwo - 1,3 million.