SQL sous ACCES 2003

Résolu/Fermé
diocool Messages postés 367 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 octobre 2010 - 13 avril 2009 à 01:15
diocool Messages postés 367 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 octobre 2010 - 16 avril 2009 à 04:38
Bonjour,
je voudrais exécuter une requête SQL sous accès mais je n'y arrive pas.
J'ai 2 tables:
-CLIENTS(NUMCLI,NOM,ADR,CA,REGION)
NUMCLI: numéro client
NOM: nom du client
ADR: adresse
CA: chiffre d'affaires annuel du client
REGION: région où habite le client

-COMMANDES(NUMCLI,NUMCOM,DATECOM)
NUMCLI: numéro client
NUMCOM: numéro commande
DATECOM: date commande

Voici la requête: De combien de régions différentes viennent les commandes clients?
SQL: SELECT COUNT(DISTINCT REGION) FROM CLIENTS AS CLI,COMMANDES AS COM WHERE CLI.NUMCLI=COM.NUMCLI;
ERREUR AFFICHEE: Erreur de syntaxe (opérateur absent) dans l'expression 'COUNT(DISTINCT REGION)'

8 réponses

paglop !!! Messages postés 633 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 3 novembre 2015 234
13 avril 2009 à 03:04
Pourquoi tu as fait une jointure

SELECT COUNT(DISTINCT REGION) FROM CLIENTS;

Ça te donne le nombre de région déjà ça !

Après tu veut peut être en fonction de chaque client
1
diocool Messages postés 367 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 octobre 2010 11
13 avril 2009 à 16:56
REGION se trouve dans la table CLIENTS et non dans la table COMMANDES.
0
paglop !!! Messages postés 633 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 3 novembre 2015 234
14 avril 2009 à 00:29
1) tu veut savoir le nombre de region ou tu a eu une commande, ou le nombre de region en fonction d'un numéro de commande ?

SELECT COUNT(DISTINCT REGION) FROM CLIENTS;

REGION se trouve dans la table CLIENTS et non dans la table COMMANDES.

Ou tu voit la table commande dans cette requette ?
0
diocool Messages postés 367 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 octobre 2010 11
14 avril 2009 à 01:20
Justement c'est pour celà que j'ai fait la jointure.
Je veux savoir le nombre de régions d'où proviennent les commandes.
0
paglop !!! Messages postés 633 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 3 novembre 2015 234
14 avril 2009 à 03:14
As tu des client qui ne font pas de commande ?

Explique le plus précisément possible la requette que tu souhaite obtenir ! Parce que je comprend pas bien ou tu veut en venir !
0
diocool Messages postés 367 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 octobre 2010 11
14 avril 2009 à 11:42
oui, c ça.
Si tous les clients avaient fait de commande on aurait simplement compté le nombre de régions dans la table CLIENTS.
0

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

Posez votre question
paglop !!! Messages postés 633 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 3 novembre 2015 234
14 avril 2009 à 23:58
SELECT COUNT(DISTINCT REGION) FROM CLIENTS WHERE NUMCLI IN (SELECT NUMCLI FROM COMMANDES;);
0
paglop !!! Messages postés 633 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 3 novembre 2015 234
15 avril 2009 à 01:26
SELECT COUNT(DISTINCT REGION) FROM CLIENTS WHERE NUMCLI IN (SELECT DISTINCT NUMCLI FROM COMMANDES;);
0
diocool Messages postés 367 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 octobre 2010 11
15 avril 2009 à 02:35
Toujours le même message d'erreur
0
Utilisateur anonyme
15 avril 2009 à 06:28
Bonjour

count(distinct...) ne fonctionne pas sous accès 2003.

tu peux essayer :
SELECT Count(*)
FROM
(select distinct region from CLIENTS, COMMANDES
WHERE CLIENTS.Numcli=Commandes.NUMCLI)

A+
0
diocool Messages postés 367 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 21 octobre 2010 11
16 avril 2009 à 04:38
Super! ça marche.
Je vous remercie tous.
0