Je les tables
Node (#id, route_id, lat, lng)
Route de fonction (#id) représente 2 coordonnées GPS GPS1 et GPS2. J'ai aussi une fonction de distance que j'ai ajouté à la base de données: distance (lat1, lng1, lat2, lng2)
Ce que je cherche est la requête qui me donnera le point le plus proche de GPS1, et le point le plus proche au GPS2 pour chaque itinéraire. Je pense que oui, il devrait commencer comme:
SELECT r.id, n1.lat, n1.lng, n2.lat, n2.lng
FROM Node n1, Node n2
JOIN Route r ON n1.route_id = r.id AND n2.route_id = r.id
et moi avons essayé d'ajouter
WHERE distance(n1.lat,n1.lng,$lat1,$lng1) = MIN (distance(n1.lat,n1.lng,$lat1,$lng1))
AND distance(n2.lat,n2.lng,$lat2,$lng2) = MIN (distance(n2.lat,n2.lng,$lat2,$lng2))
Mais il jette cette erreur:
"misuse of aggregate function MIN()"
Je pensais aussi que je pouvais utiliser
SELECT r.id, n1.lat, n1.lng, n2.lat, n2.lng, distance(n1.lat,n1.lng,$lat1,$lng1) AS d1, distance(n2.lat,n2.lng,$lat2,$lng2) AS d2
FROM Node n1, Node n2
JOIN Route r ON n1.route_id = r.id AND n2.route_id = r.id
GROUP BY r.id
Et pour le trier par d1 pour les colonnes n1.lat, n1.lng, d1 et par d2 pour les colonnes n2.lat, n2.lng, d2 mais je ne sais pas comment faire ça.
Toute idée?
Hey c'est cool! Je ne savais pas que SQLite pouvait faire ça. Et comme je suis si méchant avec eux, je n'ai pas osé essayer. Je vais l'implémenter et vous laisser savoir si cela fonctionne – Julien
Cela fonctionne! Vous êtes l'homme :) – Julien