Bonjour à tous,
dans un 1er temps, j'aimerais savoir s'il est possible d'améliorer le temps de calcul de mes requêtes UNION, pour la 1ère dont voici le code :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT ENCOURS2.CodeCLE, ENCOURS2.Exercice,ENCOURS2.CodeBP, ENCOURS2.Produit, ENCOURS2.PMdébut,ENCOURS2.PMfin,ENCOURS2.PMmoyenne,ENCOURS2.FGSE,Nz(CAbrut,0) AS [CA brut],Nz(CAnet,0) AS [CA net],Nz(fraisgestion,0) AS [Frais],Nz(commission,0) AS [Commission BP],Nz([Total des frais],0) AS TotalFrais from ENCOURS2 LEFT JOIN ACQUISITION2 ON ((ENCOURS2.CodeCLE=ACQUISITION2.CodeCLE) AND (ENCOURS2.Exercice=ACQUISITION2.Exercice) AND (ENCOURS2.CodeBP=ACQUISITION2.CodeBP) AND (ENCOURS2.Société=ACQUISITION2.Société) AND (ENCOURS2.Produit=ACQUISITION2.Produit)) UNION SELECT CodeCLE,Exercice,CodeBP,Produit,0,0,0,0, CAbrut, CAnet, fraisgestion,commission, [Total des frais] from ACQUISITION2 WHERE CodeCLE NOT IN (SELECT CodeCLE from ENCOURS2);
le résultat s'affiche instantanément,
par contre la 2ème qui s'effectue à partir de la requête précédente + 1 autre table, et dont voici le code :
celle-ci prends plus d'une heure !
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT R_Encours_CA.CodeCLE, R_Encours_CA.Exercice,R_Encours_CA.CodeBP, R_Encours_CA.Produit, R_Encours_CA.PMdébut,R_Encours_CA.PMfin,R_Encours_CA.PMmoyenne,R_Encours_CA.FGSE,R_Encours_CA.[CA brut],R_Encours_CA.[CA net],R_Encours_CA.Frais,R_Encours_CA.[Commission BP],R_Encours_CA.TotalFrais,Nz(Comsurencours,0) from R_Encours_CA LEFT JOIN CSE2 ON ((R_Encours_CA.CodeCLE=CSE2.CodeCLE) AND (R_Encours_CA.Exercice=CSE2.Exercice) AND (R_Encours_CA.CodeBP=CSE2.CodeBP) AND (R_Encours_CA.Produit=CSE2.Produit)) UNION SELECT CodeCLE,Exercice,CodeBP,Produit,0,0,0,0,Comsurencours,0,0,0,0,0 from CSE2 WHERE CodeCLE NOT IN (SELECT CodeCLE from R_Encours_CA);
Ensuite, j'aimerais créer un état à partir de cette requête, mais access m'explique qu' "une requête action ne peut être utilisée comme source" !
Avez vous une solution à me proposer ?
Merci d'avance.
Partager