Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requete sur une table

8 réponses
Avatar
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

8 réponses

Avatar
db
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
Avatar
NewsMic
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" a écrit dans le message de news:
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



Avatar
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
Avatar
NewsMic
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" a écrit dans le message de news:

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




Avatar
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
Avatar
NewsMic
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" a écrit dans le message de news:

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



Avatar
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" a écrit dans le message de news:
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" a écrit dans le message de news:

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







Avatar
NewsMic
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" a écrit dans le message de news:
%
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" a écrit dans le message de news:
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" a écrit dans le message de news:

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