Bonjour,
je suis en train de faire une requête qui peut paraitre simple mais est une vraie usine à gaz... Pour simplifier, disons que j'ai 3 tables. Des logiciels peuvent être installés à bord de véhicules, et chaque véhicule a une version donnée d'un logiciel :
J'affiche le tableau suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 VEHICULE 1 <------> 0..* VERSION 0..* <--------> 1 LOGICIEL id id id numero numero nom
Mon problème se pose lorsque je veux trier mes résultats selon la version pour un nom de logiciel donné. Dans l'idéal, si ça existait, il me faudrait quelque chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 numeroVehicule | nomLogiciel1 | nomLogiciel2 50001 | 2.0 | 5.4 50002 | 2.1 | 5.5 50003 | 2.0 | 5.1
Je pourrais faire un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT * FROM vehicule ORDER BY (SELECT numero FROM version, logiciel WHERE version.idLogiciel= logiciel.id AND logiciel.nom="nomLogiciel2")
mais je ne pense pas que l'ordre de la requête imbriquée soit conservé pour la requête principale.... (d'autant plus que la requête est en fait un peu plus compliquée que ça et que j'aurai d'autres requêtes imbriquées....).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT * FROM vehicule WHERE id IN (SELECT id FROM vehicule WHERE nom_logiciel="nomLogiciel2" ORDER BY nom_logiciel)
Quelqu'un voit-il un moyen pour "recopier" le tri d'une requête dans une autre requête ayant le même type de résultat? ou une autre solution pour remédier à mon problème??
Merci
Partager