[HF Classic][WD15] Requête dernier enregistrement par date (requêtes imbriquées)
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
SELECT
*
FROM
TBL_VOYAGE
INNER JOIN ...
WHERE
TBL_VOYAGE.IDVOYAGE =
(
SELECT
TBL_VOYAGE.IDVOYAGE
FROM
TBL_VOYAGE
INNER JOIN
TBL_LOT ON TBL_LOT.IDLOT = TBL_VOYAGE_LOT.IDLOT
INNER JOIN
TBL_VOYAGE_LOT ON TBL_VOYAGE.IDVOYAGE = TBL_VOYAGE_LOT.IDVOYAGE
WHERE
TBL_VOYAGE.Date_VOYAGE = ( SELECT MAX(TMI.Date_VOYAGE) AS Date_VOYAGE FROM TBL_VOYAGE AS TMI INNER JOIN TBL_VOYAGE_LOT as TMU ON TMI.IDVOYAGE = TMU.IDVOYAGE WHERE TMU.IDLOT = TBL_LOT.IDLOT)
) |
Bien sûr, je ne test que ma sous-requête :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
SELECT
TBL_VOYAGE.IDVOYAGE
FROM
TBL_VOYAGE
INNER JOIN
TBL_LOT ON TBL_LOT.IDLOT = TBL_VOYAGE_LOT.IDLOT
INNER JOIN
TBL_VOYAGE_LOT ON TBL_VOYAGE.IDVOYAGE = TBL_VOYAGE_LOT.IDVOYAGE
WHERE
TBL_VOYAGE.Date_VOYAGE = ( SELECT MAX(TMI.Date_VOYAGE) AS Date_VOYAGE FROM TBL_VOYAGE AS TMI INNER JOIN TBL_VOYAGE_LOT as TMU ON TMI.IDVOYAGE = TMU.IDVOYAGE WHERE TMU.IDLOT = TBL_LOT.IDLOT) |
Le HExecuteRequete ne sort pas d'erreur, mais lorsque je passe sur le HlitPremier(), ma requête mouline et met 30 min à retourner 0 enregistrements.
J'ai changé dans ma sous-sous requête par :
Code:
1 2
|
SELECT TOP 1 TMI.Date_VOYAGE FROM TBL_VOYAGE AS TMI INNER JOIN TBL_VOYAGE_LOT as TMU ON TMI.IDVOYAGE = TMU.IDVOYAGE WHERE TMU.IDLOT = TBL_LOT.IDLOT ORDER BY TMI.Date_VOYAGE DESC |
Le HexecuteRequete me retourne le message d'erreur "mot ORDER inatendu"
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 :ccool: