|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre actif
![]() |
Bonjour,
Malgré une recherche intensive (google, forum SQL) et l'aide de collègues, je me permet d'ouvrir une nouvelle discussion car je n'arrive pas à avancer et ceux depuis 2 jours ... J'ai trois table : TBL_VOYAGE, TBL_LOT, TBL_VOYAGE_LOT Je veux donc récupérer pour chaque LOT son dernier voyage, j'ai donc écrit ma requête suivante : Code :
Code :
J'ai changé dans ma sous-sous requête par : Code :
J'ai testé en HRequêteDefaut et en HRequeteSansCorrection, pas d'évolution... Je pense que HFSql (ou Windev) ne sait pas interpréter le WHERE de ma 2nd sous-requête ... Comment puis-je faire pour avoir les résultats attendu ? Merci d'avance pour votre aide
__________________
RoUtMoUt DeVeLoPPeUr WINDEV FOU !!!!!! |
||||||
|
|
00
|
|
|
#2 | ||||||||||
|
Membre actif
![]() |
Suite à une demande sur le forum PCSOFT voici de meilleures explications
J'utilise en effet les sous-requêtes, je n'ai pas trop confiance avec les requêtes de requêtes J'ai modifier mon code pour passer par une requête de l'éditeur : qSel_Parc_LOT, ça change pas grand chose mais le code est plus clair. Mon code est : Code :
Code :
- En exécution par requête dans l'éditeur Code :
Le HexecuteRequeteSQL n'engendre pas de message d'erreur cependant le HLitPremier oui : Code :
Code :
__________________
RoUtMoUt DeVeLoPPeUr WINDEV FOU !!!!!! |
||||||||||
|
|
00
|
|
|
#3 | ||
|
Membre actif
![]() |
Voici la réponse de =JBO= sur le forum PCSoft qui résout mon problème.
Un grand merci à lui ![]() ![]() ![]() Bonjour routmout, Après avoir fait des essais, je constate que le moteur HyperFile ne peut pas : (a) gérer la jointure avec l'opérateur AND dans le dernier ON, (b) gérer la condition dans une clause WHERE de même niveau (tu verras plus loin pourquoi je parle de niveau) Et franchement, effectuer une jointure sur une colonne agrégée provenant d'une sous-requête agrégat, c'est assez complexe à gérer (j'imagine que d'autres SGBD y arrivent ?). Alors je crois avoir trouver la parade. Il faut que la condition sur la Date Max apparaisse dans une clause WHERE de plus haut niveau. En clair, il faut ajouter un niveau d'imbrication de sous-requête. Et pour exécuter la condition, il faut ajouter DateVOYAGE_Max dans la liste des rubriques retournées par la sous-requête "principale" afin de pouvoir comparer cette rubrique avec Date_VOYAGE. La rubrique Date_VOYAGE est-elle indexée ? Peut-être que ça peut améliorer les performances. Code :
__________________
RoUtMoUt DeVeLoPPeUr WINDEV FOU !!!!!! |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com