Bonjour,
merci de prendre le temps de me lire.
Je travaille sous sql 2000, en language asp.
Je dois faire un tableau de reporting par utilisateur et par mois.
J'ai mis en place une méthode dont je ne suis pas tout à fait satisfait, tant qu'il n'y a que peu d'enregistrement ça m'a l'air à peu près fluide, dès que ça augmentent, je trouve que je perd beaucoup de temps à l'affichage... et c'est peut être normal.
Du coup, j'aimerai voir s'il n'y a pas mieux pour faire la même chose avec un peu d'optimisation.
Méthode utilisée : Je créé un tableau [dim (x,12)]. J'ouvre une première requete de sélection des clients qui remplisse la condition (cad avoir des rapports pour l'année selectionné avec les conditions requises) et je boucle jusqu'à la fin du recordset.
A chaque item trouvé, je rempli mon tableau(x,0)avec l'id du client. J'exécute une seconde requete sur le nombre de rapport du clientid group by mois et order by mois.
Je boucle ma seconde requete et envoi les résultats dans le tableau, de 1 à 12 (par mois)
A la fin des 2 boucles, mon tableau de valeurs est rempli, je n'ai plus qu'à le cracher dans une boucle for next, une valeur par cellule.
J'ai essayé de passer par un procédure stockée, pensant que je pouvais gagner en temps. Sauf que je n'ai pas trouvé comment faire...
J'ai essayé également (avec procédure ou non) de faire des sous requetes, genre :
[select nom_client,
(select count(*) from raports where annee=x et idclient=y et mois=1) M1,
(select count(*) from raports where annee=x et idclient=y et mois=2) M2,
... (jusqu'à 12)
from client]
Mais du coup, je me demande si ce n'est pas plus lent ? (en tout cas c'est plus laborieux et paraît pas très optimisée...)
Quelqu'un a t-il déjà eu le cas et quelle solution serai la meilleure ?
Merci à tout ceux qui pourront me faire avancer.
Partager