Bonjour,
Je simplifie : Dans le domaine aéronautique, un vol à une escale de départ et d'arrivé. J'ai une table `escale` contenant toutes mes escales, et une table vol contenant l'id de l'escale de départ et l'id de l'escale d'arrivé.
Je dois afficher TOUTES les escales de l'entreprise (autant dire qu'il y en à un sacré paquet) et lors de cet affichage je dois afficher si il s'agit d'une escales de départ ou d'arrivé.
Solution 1 : Dans la boucle au niveau de la programmation, je refaire une requête pour savoir si l'escale existe en tant que escale de départ et j'en détermine le résultat.
Pb : Ça alourdie considérablement le nombre de requêtes que j’envoie au serveur lors de l'affichage (de 1 requêtes à ~37 000).
Solution 2 : Je crois un champs pour spécifier si il s'agit d'une escale de départ ou d'arrivée dans la table escales
Pb : On renseigne une information que l'on peut obtenir autrement. De plus (même si théoriquement ça n'arrive pas), il est techniquement possible d'avoir le champs spécifié en escale de départ et l'id de ce dernier renseigné en escale d'arrivé dans la table vol.
Solution 3 : Je vous écoutes. Je pense qu'il doit y avoir un moyen de faire ça dans une grosse requête SQL. J'ai commencer à regarder du coté de "CASE". L'idéal serait
[...] SI (SELECT count(*) FROM vol WHERE IdEscaleDepart = IdDeEscale [...] ALORS Depart = 1 sinon Depart = 0
Et si départ = 0 alors c'est une escale d'arrivé.
Pb : Je ne sais pas comment faire
-----------------------------------------
J'ai aussi pensé à prendre le pb à l'envers. Afficher toutes les escales à partir de la liste des IdEscalesDepart dans la table tronçon, puis refaire une requête équivalente pour les IdEscalesArrivee. Mais ça me semble moyennement propre aussi.
Merci d'avance,
Sanna
Partager