Access /requete selectionner top des ventes

Résolu/Fermé
coric06 - 25 janv. 2008 à 19:56
 Das - 18 nov. 2010 à 11:52
Bonjour,
je cherche à faire une requete sur acces qui selectionne les 20 top des ventes de chaque famille d'articles d'un catalogue.

J'arrive à sélectionner les 20 produits les plus vendus mais pas les 20 produits les + vendus de chaque famille !!
J'ai essayé avec la fonction Top n mais je n'y arrive pas.
Sinon j'ai pensé sélectionner les 20 top produits pour une famille et faire une itération mais je n'y arrive pas non plus.

Voici le volet sql:
SELECT TOP 20 zzzzzzzzzzz250108_2.Qtes AS [Quantités vendues],
zzzzzzzzzzz250108_2.AR_Ref,
F_FAMILLE.FA_CodeFamille
FROM dbo.zzzzzzzzzzz250108_2 INNER JOIN
dbo.F_ARTICLE ON
dbo.zzzzzzzzzzz250108_2.AR_Ref = dbo.F_ARTICLE.AR_Ref,
dbo.F_FAMILLE
GROUP BY dbo.zzzzzzzzzzz250108_2.AR_Ref,
dbo.F_ARTICLE.FA_CodeFamille,
dbo.zzzzzzzzzzz250108_2.Qtes,
dbo.F_FAMILLE.FA_CodeFamille
HAVING (dbo.F_ARTICLE.FA_CodeFamille = 'CARTESGRP')

Merci de votre aide !!!

9 réponses

Je pense que le mieux sera de passer par une table intermédiaire "par requete création" regroupant les articles avec indication de la famille et la qté totale et ensuite
- soit de récupérer le resultat sur excel et par tri "famille" puis "qté" créeer par macro le numéro de rang pour chacun et supprimer les rangs de 21 et +.....
- soit par macro access créer une nouvelle table en ajoutant par boucle le 20 premiers artciles classés par famille et qté...

Cela dépend aussi du nombre de ligne et de la structure de la table originale....
1
phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 33
27 janv. 2008 à 11:06
"j'ai pensé sélectionner les 20 top produits pour une famille et faire une itération"
bonne approche, mais au lieu d'iterer je propose une requête UNION

select blabla from bloblo
union
select blibli from blublu
union
...

order by blblblb
0
Phil, merci pour ta réponse...

Le problème est que la liste des familles est très longue et elle évolue sans arret c'zest pourquoi on ne peut pas les mettre dans la requete.
Il faudrait que la requete parcoure la table famille complète et selectionne poutr chaque famille de la table les top 20.
0
Ricool42 Messages postés 3 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 janvier 2008
28 janv. 2008 à 11:45
Je pense que le mieux sera de passer par une table intermédiaire "par requete création" regroupant les articles avec indication de la famille et la qté totale et ensuite
- soit de récupérer le resultat sur excel et par tri "famille" puis "qté" créeer par macro le numéro de rang pour chacun et supprimer les rangs de 21 et +.....
- soit par macro access créer une nouvelle table en ajoutant par boucle le 20 premiers artciles classés par famille et qté...

Cela dépend aussi du nombre de ligne et de la structure de la table originale.......
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
@¿@ Messages postés 48 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 23 mai 2009 6
28 janv. 2008 à 12:38
j avais mal lu excuses
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
28 janv. 2008 à 15:02
SELECT * FROM
(
SELECT TOP 20
Qtes AS [Quantités vendues],
AR_Ref,
FA_CodeFamille
FROM
zzzzzzzzzzz250108_2
INNER JOIN F_ARTICLE ON zzzzzzzzzzz250108_2.AR_Ref = F_ARTICLE.AR_Ref
GROUP BY
zzzzzzzzzzz250108_2.AR_Ref,
FA_CodeFamille,
Qtes
)
Sales
INNER JOIN F_ARTICLE ON Sales.AR_Ref = dbo.F_ARTICLE.AR_Ref,
INNER JOIN F_FAMILLE ON F_FAMILLE.FA_CodeFamille = Sales.FA_CodeFamille
0
Bonjour à tous,

Je me permet de relancer ce post. La syntaxe ci dessus me semble particulièrement intéressante mais je n'arrive pas à la faire fonctionner. L'objectif est de sortir un TOP 5 par regroupement. Exemple TOP 5 des ventes par vendeur ou les 10 dernières ventes par article ect...

Exemple d'une table avec NomVendeur ; ArticleVendu ; ChiffreDAffaire

Comment sélectionner le top 3 des produits les plus vendus par vendeur (sans faire des unions de table avec des noms de vendeurs figés).

Merci d'avance, j'ai beau chercher je ne trouve pas de piste plus claire que ci dessus.

Adrien
0
Pour être plus précis et d'après la réponse ci-dessus, il faudrait faire 2 tables avec distinctes avec la requête ci dessous. Malheureusement cela ne pas et j'obtiens le TOP 3 des articles les plus vendus quelque soit le vendeur...

TableVente : MatriculeVendeur ; ArticleVendu ; ChiffreDAffaire
TableVendeur : MatriculeVendeur ; NomVendeur

puis la requête ci dessous :

SELECT * FROM
(
SELECT TOP 3
MatriculeVendeur, ArticleVendu, ChiffreDAffaire
FROM
TableVente
GROUP BY
MatriculeVendeur, ArticleVendu, ChiffreDAffaire
ORDER BY ChiffreDAffaire DESC
)
sales
INNER JOIN TableVendeur ON sales.MatriculeVendeur = TableVendeur.NomVendeur
;
0
Bonjour,

Le sujet m'interresse beaucoup, si vous trouvez une solution, ce serait super bien de la poster.

Merci.
0