2009-07-16 8 views
0

Je souhaite stocker la distance entre différents emplacements d'une table. Lorsqu'une distance entre deux points est mesurée, elle est insérée dans la table. Obtenir la distance entre «de» et «à» est évidemment très facile. Cependant, la distance entre 'to' et 'from' est exactement la même. Je ne veux pas faire une autre rangée juste pour passer le 'à' et 'de'. Je préférerais également ne pas avoir à faire une table de recherche pour cette table, pour accomplir ceci.Recherche de stratégies sql intelligentes pour traiter une table de correspondance

Le sql pour sélectionner la distance sera appelé beaucoup donc il doit être une requête efficace.

J'ai simplifié la table alors ne vous inquiétez pas sur les lieux étant varchars etc.

Quelqu'un at-il des stratégies qu'ils pourraient recommander?

Répondre

4

Appelez les emplacements 'A' et 'B'. Si A < B, alors recherchez A dans 'from' et B dans 'to', sinon, cherchez B dans 'from' et A dans 'to'. Même logique lors de l'insertion de valeurs.

De cette façon, vous ne stockez qu'une seule fois chaque combinaison, et il est rapide à interroger.

+0

exactement le genre de solution que j'avais après - bien fait –

0

Puis-je suggérer quelque chose de complètement différent. Chaque point a des coordonnées relatives au même point, de sorte que les distances seront calculées en donnant deux points, et non sauvegardées dans la BD. Maintenant, si ce sont des points sur les cartes/Graph, alors une autre solution est en place.

+0

Il n'a pas dit que les emplacements avaient des coordonnées, ni que la distance entre eux est une ligne droite. Si les lieux sont des villes et que la distance est le trajet routier le plus rapide, elles ne seront certainement pas des lignes droites. –

+0

J'ai mentionné les graphiques dans ma réponse. De toute façon, la meilleure façon de stocker ce qu'il veut stocker n'est pas dans une base de données relationnelle. –

Questions connexes