Bonjour
j'essaie de construire une requete si je mets *3 LEFT JOIN à la suite cela va impeccable dès que je mets le 4ème LEFT JOIN elle devient très lente, et je devrais faire 12 LEFT JOIN pour les 12 mois comment faire ?
Voici le code
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 str = " SELECT Base_Tournee.Groupe, " & _ "Avg(SousRequete1.SommeDeTT) AS Moy_t_1, Avg(SousRequete1.Km_Total) AS Moy_km_1,Avg(SousRequete2.SommeDeTT) AS Moy_t_2, Avg(SousRequete2.Km_Total) AS Moy_km_2,Avg(SousRequete3.SommeDeTT) AS Moy_t_3, Avg(SousRequete3.Km_Total) AS Moy_km_3,Avg(SousRequete4.SommeDeTT) AS Moy_t_4, Avg(SousRequete4.Km_Total) AS Moy_km_4 " & _ "FROM (((Base_Tournee " & _ "LEFT JOIN (SELECT Base_Fiche.Date, Sum(Base_Fiche.TT) AS SommeDeTT, Sum([Km_Arrivee]-[Km_Depart]) AS Km_Total, Base_Tournee.Groupe FROM Base_Tournee INNER JOIN Base_Fiche ON Base_Tournee.Tournee=Base_Fiche.No_Tournee GROUP BY Base_Fiche.Date, Base_Tournee.Groupe HAVING (Month([Date])=1) AND (Year([Date])=2007)) AS SousRequete1 ON Base_Tournee.Groupe=SousRequete1.Groupe) " & _ "LEFT JOIN (SELECT Base_Fiche.Date, Sum(Base_Fiche.TT) AS SommeDeTT, Sum([Km_Arrivee]-[Km_Depart]) AS Km_Total, Base_Tournee.Groupe FROM Base_Tournee INNER JOIN Base_Fiche ON Base_Tournee.Tournee=Base_Fiche.No_Tournee GROUP BY Base_Fiche.Date, Base_Tournee.Groupe HAVING (Month([Date])=2) AND (Year([Date])=2007)) AS SousRequete2 ON Base_Tournee.Groupe=SousRequete2.Groupe) " & _ "LEFT JOIN (SELECT Base_Fiche.Date, Sum(Base_Fiche.TT) AS SommeDeTT, Sum([Km_Arrivee]-[Km_Depart]) AS Km_Total, Base_Tournee.Groupe FROM Base_Tournee INNER JOIN Base_Fiche ON Base_Tournee.Tournee=Base_Fiche.No_Tournee GROUP BY Base_Fiche.Date, Base_Tournee.Groupe HAVING (Month([Date])=3) AND (Year([Date])=2007)) AS SousRequete3 ON Base_Tournee.Groupe=SousRequete3.Groupe) " & _ "LEFT JOIN (SELECT Base_Fiche.Date, Sum(Base_Fiche.TT) AS SommeDeTT, Sum([Km_Arrivee]-[Km_Depart]) AS Km_Total, Base_Tournee.Groupe FROM Base_Tournee INNER JOIN Base_Fiche ON Base_Tournee.Tournee=Base_Fiche.No_Tournee GROUP BY Base_Fiche.Date, Base_Tournee.Groupe HAVING (Month([Date])=4) AND (Year([Date])=2007)) AS SousRequete4 ON Base_Tournee.Groupe=SousRequete4.Groupe " & _ "GROUP BY Base_Tournee.Groupe;"
Ci-dessous représentation graphique de ma requete
Merci
Partager