Requete sur une table

Le
NewsMic
Bonjour,

Quand un "client" passe une commande pour la première fois, il est créé avec
un code d'origine ORIG1 ou ORIG2 ou ORIG3
Ce code d'origine n'est donc QUE sur sa première commande
Quand un de ces clients passe ensuite d'autres commandes, on lui affecte
d'autres codes différents
Soit une table Commandes dans laquelle il y a :
des clients qui n'ont passé qu'une seule commande
des clients qui ont passé 2 commandes ou plus.
Comment obtenir un classement décroissant sur le meilleur chiffre d'affaire
par code d'origine à partir des clients ayant au moins 2 commandes ?
Merci d'avance,

MichelR
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
db
Le #20543101
NewsMic a écrit :
Bonjour,

Quand un "client" passe une commande pour la première fois, il est créé avec
un code d'origine ORIG1 ou ORIG2 ou ORIG3...
Ce code d'origine n'est donc QUE sur sa première commande
Quand un de ces clients passe ensuite d'autres commandes, on lui affecte
d'autres codes différents
Soit une table Commandes dans laquelle il y a :
des clients qui n'ont passé qu'une seule commande
des clients qui ont passé 2 commandes ou plus.
Comment obtenir un classement décroissant sur le meilleur chiffre d'affaire
par code d'origine à partir des clients ayant au moins 2 commandes ?
Merci d'avance,

MichelR






Quelque chose comme ça :

SELECT CodeOrigine, Sum(CA)
From Commandes
GROUP BY CodeOrigine
Having count(*)>1
ORDER BY Sum(CA) Desc

db
NewsMic
Le #20544011
Merci pour cette base db mais ça ne fonctionne pas.
J'ai modifié mais je n'arrive pas à obtenir par code d'origine, j'ai un
résultat par le dernier code de commande.
MichelR
"db" O$
NewsMic a écrit :
Bonjour,

Quand un "client" passe une commande pour la première fois, il est créé
avec un code d'origine ORIG1 ou ORIG2 ou ORIG3...
Ce code d'origine n'est donc QUE sur sa première commande
Quand un de ces clients passe ensuite d'autres commandes, on lui affecte
d'autres codes différents
Soit une table Commandes dans laquelle il y a :
des clients qui n'ont passé qu'une seule commande
des clients qui ont passé 2 commandes ou plus.
Comment obtenir un classement décroissant sur le meilleur chiffre
d'affaire par code d'origine à partir des clients ayant au moins 2
commandes ?
Merci d'avance,

MichelR






Quelque chose comme ça :

SELECT CodeOrigine, Sum(CA)
From Commandes
GROUP BY CodeOrigine
Having count(*)>1
ORDER BY Sum(CA) Desc

db



db
Le #20544271
NewsMic a écrit :
Merci pour cette base db mais ça ne fonctionne pas.
J'ai modifié mais je n'arrive pas à obtenir par code d'origine, j'ai un
résultat par le dernier code de commande.
MichelR


I





Il faudrait davantage de détails sur votre structure (notamment Clients
et Commandes, et les liens)

db
NewsMic
Le #20544501
J'ai réussi en 2 étapes avec 2 requêtes et un TCD. Mais on peut peut être
améliorer ou simplifier : Voici le résultat
SELECT First([Ventes].[Code action support]) AS [PremierDeCode action
support], [Commandes].[No adresse], [Commandes].[Montant livré]
FROM Ventes INNER JOIN Commandes ON [Ventes].[No adresse]=Commandes.[No
adresse]
GROUP BY [Commandes].[No adresse], [Commandes].[Montant livré]
HAVING ((([Commandes].[Montant livré])>0))
ORDER BY First([Ventes].[Code action support]);

Dans la table Ventes, les commandes sont classées par ordre chronologique.
Le "code action support" de cette 1ère commande est aussi le code d'origine
du client ("No adresse"). Mais il n'y a aucun lien. La table "Ventes"
contient absolument tous les enregistrements
MichelR

"db"
NewsMic a écrit :
Merci pour cette base db mais ça ne fonctionne pas.
J'ai modifié mais je n'arrive pas à obtenir par code d'origine, j'ai un
résultat par le dernier code de commande.
MichelR


I




Il faudrait davantage de détails sur votre structure (notamment Clients et
Commandes, et les liens)

db




db
Le #20544561
NewsMic a écrit :
J'ai réussi en 2 étapes avec 2 requêtes et un TCD. Mais on peut peut être
améliorer ou simplifier : Voici le résultat
SELECT First([Ventes].[Code action support]) AS [PremierDeCode action
support], [Commandes].[No adresse], [Commandes].[Montant livré]
FROM Ventes INNER JOIN Commandes ON [Ventes].[No adresse]=Commandes.[No
adresse]
GROUP BY [Commandes].[No adresse], [Commandes].[Montant livré]
HAVING ((([Commandes].[Montant livré])>0))
ORDER BY First([Ventes].[Code action support]);

Dans la table Ventes, les commandes sont classées par ordre chronologique.
Le "code action support" de cette 1ère commande est aussi le code d'origine
du client ("No adresse"). Mais il n'y a aucun lien. La table "Ventes"
contient absolument tous les enregistrements
MichelR



Je ne comprends pas grand chose à votre structure... Vous ne voulez
vraiment pas donner la structure de vos tables et les informations liées
? Comment faites-vous le lien entre le [Code action support] et le [No
adresse] d'un client ?

db
NewsMic
Le #20548271
Bonjour,

Excusez-moi, mais je ne maitrise pas tout dans Access (loin s'en faut !)
En mode création, on a la liste de tous les champs, comment éditer la
structure au format texte ou autre pour vous la fournir en réponse ?
Cela dit, il n'y a pas DES tables, mais UNE SEULE table avec toutes
informations. Chaque enregistrement contient notamment : date, n°facture, N°
client, nom + prenom, adresse, code postal, ville, référence article, qté
livrée, montant.... Ce qui fait qu'il y a une redondance d'informations à
chaque ligne.
MichelR

"db"
NewsMic a écrit :
J'ai réussi en 2 étapes avec 2 requêtes et un TCD. Mais on peut peut être
améliorer ou simplifier : Voici le résultat
SELECT First([Ventes].[Code action support]) AS [PremierDeCode action
support], [Commandes].[No adresse], [Commandes].[Montant livré]
FROM Ventes INNER JOIN Commandes ON [Ventes].[No adresse]=Commandes.[No
adresse]
GROUP BY [Commandes].[No adresse], [Commandes].[Montant livré]
HAVING ((([Commandes].[Montant livré])>0))
ORDER BY First([Ventes].[Code action support]);

Dans la table Ventes, les commandes sont classées par ordre
chronologique. Le "code action support" de cette 1ère commande est aussi
le code d'origine du client ("No adresse"). Mais il n'y a aucun lien. La
table "Ventes" contient absolument tous les enregistrements
MichelR



Je ne comprends pas grand chose à votre structure... Vous ne voulez
vraiment pas donner la structure de vos tables et les informations liées ?
Comment faites-vous le lien entre le [Code action support] et le [No
adresse] d'un client ?

db



Blaise Cacramp
Le #20548791
Selon : Bonjour ou bonsoir

Ouille, il y en a qui vont s'étrangler !
Si c'est pour faire une table plate, avec des redondances, allez dans Excel.
Sinon, il faut organiser vos données en +sieurs tables en y mettant des
relations.

Allez dans le menu Outils, Analyse, Table

Pour la v 2007, un autre que moi répondra.

Cdt, Blaise
---- ---- ----


"NewsMic" 4afd77d9$0$970$
Bonjour,

Excusez-moi, mais je ne maitrise pas tout dans Access (loin s'en faut !)
En mode création, on a la liste de tous les champs, comment éditer la
structure au format texte ou autre pour vous la fournir en réponse ?
Cela dit, il n'y a pas DES tables, mais UNE SEULE table avec toutes
informations. Chaque enregistrement contient notamment : date, n°facture,
N° client, nom + prenom, adresse, code postal, ville, référence article,
qté livrée, montant.... Ce qui fait qu'il y a une redondance
d'informations à chaque ligne.
MichelR

"db"
NewsMic a écrit :
J'ai réussi en 2 étapes avec 2 requêtes et un TCD. Mais on peut peut
être améliorer ou simplifier : Voici le résultat
SELECT First([Ventes].[Code action support]) AS [PremierDeCode action
support], [Commandes].[No adresse], [Commandes].[Montant livré]
FROM Ventes INNER JOIN Commandes ON [Ventes].[No adresse]=Commandes.[No
adresse]
GROUP BY [Commandes].[No adresse], [Commandes].[Montant livré]
HAVING ((([Commandes].[Montant livré])>0))
ORDER BY First([Ventes].[Code action support]);

Dans la table Ventes, les commandes sont classées par ordre
chronologique. Le "code action support" de cette 1ère commande est aussi
le code d'origine du client ("No adresse"). Mais il n'y a aucun lien. La
table "Ventes" contient absolument tous les enregistrements
MichelR



Je ne comprends pas grand chose à votre structure... Vous ne voulez
vraiment pas donner la structure de vos tables et les informations liées
? Comment faites-vous le lien entre le [Code action support] et le [No
adresse] d'un client ?

db







NewsMic
Le #20548941
Il s'agit d'une table plate à partir de données extraites au format Excel
issues d'un IBM iseries. Je n'aime pas non plus les redondances, mais je
suis malheureusement bien obligé de travailler avec ce qu'on me donne. (snif
!)
De cette table, j'ai créé dans Access des requêtes dont une pour les
commandes. Puis une requête entre la table Ventes et la requête Commandes
avec le "N°adresse" en relation entre les 2. C'est de cette dernière requête
que j'ai pu obtenir le résultat.
Amicalement,
MichelR

"Blaise Cacramp" %
Selon : Bonjour ou bonsoir

Ouille, il y en a qui vont s'étrangler !
Si c'est pour faire une table plate, avec des redondances, allez dans
Excel.
Sinon, il faut organiser vos données en +sieurs tables en y mettant des
relations.

Allez dans le menu Outils, Analyse, Table

Pour la v 2007, un autre que moi répondra.

Cdt, Blaise
---- ---- ----


"NewsMic" 4afd77d9$0$970$
Bonjour,

Excusez-moi, mais je ne maitrise pas tout dans Access (loin s'en faut !)
En mode création, on a la liste de tous les champs, comment éditer la
structure au format texte ou autre pour vous la fournir en réponse ?
Cela dit, il n'y a pas DES tables, mais UNE SEULE table avec toutes
informations. Chaque enregistrement contient notamment : date, n°facture,
N° client, nom + prenom, adresse, code postal, ville, référence article,
qté livrée, montant.... Ce qui fait qu'il y a une redondance
d'informations à chaque ligne.
MichelR

"db"
NewsMic a écrit :
J'ai réussi en 2 étapes avec 2 requêtes et un TCD. Mais on peut peut
être améliorer ou simplifier : Voici le résultat
SELECT First([Ventes].[Code action support]) AS [PremierDeCode action
support], [Commandes].[No adresse], [Commandes].[Montant livré]
FROM Ventes INNER JOIN Commandes ON [Ventes].[No adresse]=Commandes.[No
adresse]
GROUP BY [Commandes].[No adresse], [Commandes].[Montant livré]
HAVING ((([Commandes].[Montant livré])>0))
ORDER BY First([Ventes].[Code action support]);

Dans la table Ventes, les commandes sont classées par ordre
chronologique. Le "code action support" de cette 1ère commande est
aussi le code d'origine du client ("No adresse"). Mais il n'y a aucun
lien. La table "Ventes" contient absolument tous les enregistrements
MichelR



Je ne comprends pas grand chose à votre structure... Vous ne voulez
vraiment pas donner la structure de vos tables et les informations liées
? Comment faites-vous le lien entre le [Code action support] et le [No
adresse] d'un client ?

db












Publicité
Poster une réponse
Anonyme