Prd requête sql
Tiinooo
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
A la fin de l'année de je vais passer mon BAC de marketing et pour mon projet j'ai fait une table sous access avec plusieurs Requête mais une d'entre elle ne marche pas, Voici ma requête :
SELECT CLIENT.NumClient, Sum(Prix*Quantite) AS CA_Client, CLIENT.Nom, CLIENT.Prénom, CLIENT.Addresse, CLIENT.Code_postal
FROM PRODUITS INNER JOIN ((CLIENT INNER JOIN FACTURE ON CLIENT.NumClient = FACTURE.NumClient) INNER JOIN COMPONANT ON FACTURE.RefFact = COMPONANT.RefFact) ON PRODUITS.RefPdt = COMPONANT.RefPdt
WHERE (((FACTURE.RefFact)=[COMPONANT].[RefFact]) AND ((PRODUITS.RefPdt)=[COMPONANT].[RefPdt]))
GROUP BY CLIENT.NumClient;
Et le message d'erreur :
Vous avez essayé d'executer une requête ne comprenant pas l'expression spécifiée 'Nom' comme une partie de la fonction d'agrégat.
Lorsque j'enleve CLIENT.Nom, CLIENT.Prénom, CLIENT.Addresse, CLIENT.Code_postal
la requête marche mais j'ai absolument besoin de ces champs afin de la combiner avec un publipostage sous word.
Sous Access 2003
A la fin de l'année de je vais passer mon BAC de marketing et pour mon projet j'ai fait une table sous access avec plusieurs Requête mais une d'entre elle ne marche pas, Voici ma requête :
SELECT CLIENT.NumClient, Sum(Prix*Quantite) AS CA_Client, CLIENT.Nom, CLIENT.Prénom, CLIENT.Addresse, CLIENT.Code_postal
FROM PRODUITS INNER JOIN ((CLIENT INNER JOIN FACTURE ON CLIENT.NumClient = FACTURE.NumClient) INNER JOIN COMPONANT ON FACTURE.RefFact = COMPONANT.RefFact) ON PRODUITS.RefPdt = COMPONANT.RefPdt
WHERE (((FACTURE.RefFact)=[COMPONANT].[RefFact]) AND ((PRODUITS.RefPdt)=[COMPONANT].[RefPdt]))
GROUP BY CLIENT.NumClient;
Et le message d'erreur :
Vous avez essayé d'executer une requête ne comprenant pas l'expression spécifiée 'Nom' comme une partie de la fonction d'agrégat.
Lorsque j'enleve CLIENT.Nom, CLIENT.Prénom, CLIENT.Addresse, CLIENT.Code_postal
la requête marche mais j'ai absolument besoin de ces champs afin de la combiner avec un publipostage sous word.
Sous Access 2003
A voir également:
- Prd requête sql
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
2 réponses
Bonjour,
Alors, je suis surpris de la syntaxe
INNER JOIN ((CLIENT INNER JOIN FACTURE ON CLIENT.NumClient = FACTURE.NumClient)
.
Mais je ne connais pas trop Access, donc, admettons.
Par contre, le message d'erreur indique qu'il attend que les champs CLIENT.Nom et CLIENT.Prénom soient inclus à ta clause GROUP BY.
Donc ta requête deviendrait :
Alors, je suis surpris de la syntaxe
INNER JOIN ((CLIENT INNER JOIN FACTURE ON CLIENT.NumClient = FACTURE.NumClient)
.
Mais je ne connais pas trop Access, donc, admettons.
Par contre, le message d'erreur indique qu'il attend que les champs CLIENT.Nom et CLIENT.Prénom soient inclus à ta clause GROUP BY.
Donc ta requête deviendrait :
SELECT CLIENT.NumClient, Sum(Prix*Quantite) AS CA_Client, CLIENT.Nom, CLIENT.Prénom, CLIENT.Addresse, CLIENT.Code_postal FROM PRODUITS INNER JOIN ((CLIENT INNER JOIN FACTURE ON CLIENT.NumClient = FACTURE.NumClient) INNER JOIN COMPONANT ON FACTURE.RefFact = COMPONANT.RefFact) ON PRODUITS.RefPdt = COMPONANT.RefPdt WHERE (((FACTURE.RefFact)=[COMPONANT].[RefFact]) AND ((PRODUITS.RefPdt)=[COMPONANT].[RefPdt])) GROUP BY CLIENT.NumClient, CLIENT.Nom, CLIENT.Prénom, CLIENT.Addresse, CLIENT.Code_postal;
Bonjour,
de façon général, que ce soit en Accès, SQL, MySQL, Oracle... quand on fait une requête de sélection avec un agrégat (somme, moyenne, maximum, minimum...), TOUS les champs qui ne comportent pas d'agrégat doivent être présents dans la clause GROUP BY. Donc ta clause GROUP BY doit contenur le numéro de client, le nom, le prénom, l'adresse et le code postal, comme l'indique Reivax962.
Cordialement.
de façon général, que ce soit en Accès, SQL, MySQL, Oracle... quand on fait une requête de sélection avec un agrégat (somme, moyenne, maximum, minimum...), TOUS les champs qui ne comportent pas d'agrégat doivent être présents dans la clause GROUP BY. Donc ta clause GROUP BY doit contenur le numéro de client, le nom, le prénom, l'adresse et le code postal, comme l'indique Reivax962.
Cordialement.