Bonjour,
On m'a fourni une base de donnée contenant un table qui se présente sous la forme suivante :
frefarticle Données (plusieurs colonnes) fdatelivdem (une date) 1 xxxxx 05/05/2014 1 xxyxx 01/01/2014 1 xxyyy 02/08/2015 2 aaxxx 15/12/2014 2 zzzuu 02/01/2015
Pour chaque référence, je ne veux récupérer que les données les plus récentes.
Soit pour ce exemple :
frefarticle Données (plusieurs colonnes) fdatelivdem (une date) 1 xxyyy 02/08/2015 2 zzzuu 02/01/2015
J'utilise ensuite ces données pour compléter des données dans un classeur Excel.
Jusque là, pas de soucis,
depuis Excel, j'ouvre un recordset avec la requête suivante :
Le problème ici vient du fait que cette base est vraiment très grande (plus de 140 000 enregistrements) ce qui fait que le temps de traitement est énorme (je ne suis jamais allé jusqu'au bout).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT * FROM NomTable a WHERE a.fdatelivrdem = (SELECT MAX(b.fdatelivrdem) FROM NomTable b WHERE b.frefarticle=a.frefarticle GROUP BY b.frefarticle) ORDER BY a.frefarticle
Y a-t-il un moyen d'optimiser cette requête et/ou un travail en amont à réaliser sur la table, sous access afin de rendre la procédure réalisable ? :/
J'ai déjà supprimé les champs dont je ne me servais pas et réduit la base au maximum en supprimant les données trop anciennes pour être utiles (Il s'agit d'une copie que l'on m'envoie, je peux lui faire "subir" n'importe quoi sans danger)
Merci de votre aide
Partager