[MYSQL] Compter le nombre d'enregistrements par client
Le
Olivier Berquin
Bonjour tout le monde,
J'ai un petit soucis d'efficacité.
J'ai une table "Clients" toute simple:
cl_id [INT]
cl_code [VARCHAR] (Nom du client abrégé)
cl_nom [VARCHAR] (Nom complet)
Et une table "Jobs" un peu plus compliquée, mais les champs qui sont
concernés sont les suivants:
jo_id [INT]
jo_client [INT] (référence à cl_id)
Ma question est la suivante: comment faire pour avoir ne liste avec le
*nom* du client et à côté, le nombre de jobs réalisé pour ce clie=
nt.
Je peux faire ceci:
SELECT jo_client, count(*) FROM Jobs GROUP BY jo_client
qui me donne le jo_client et le nombre de job réalisé (count(*)).
Mais je voudrais un truc plus explicite
Client Nombre
APPLE 215
MICROSOFT 317
IBM 28
HP 1986
Je suis en train de faire deux requêtes, et ça m'emm bcp.
La première
SELECT jo_client, count(*) FROM Jobs GROUP BY jo_client
Et la seconde (pas finie) doit, pour chaque donnée reçue de cette
première requête aller dans la table "Clients" pour connaître le nom
du client.
N'y-t-il pas moyen de faire cela en une seule?
Merci beaucoup.
Oli.
J'ai un petit soucis d'efficacité.
J'ai une table "Clients" toute simple:
cl_id [INT]
cl_code [VARCHAR] (Nom du client abrégé)
cl_nom [VARCHAR] (Nom complet)
Et une table "Jobs" un peu plus compliquée, mais les champs qui sont
concernés sont les suivants:
jo_id [INT]
jo_client [INT] (référence à cl_id)
Ma question est la suivante: comment faire pour avoir ne liste avec le
*nom* du client et à côté, le nombre de jobs réalisé pour ce clie=
nt.
Je peux faire ceci:
SELECT jo_client, count(*) FROM Jobs GROUP BY jo_client
qui me donne le jo_client et le nombre de job réalisé (count(*)).
Mais je voudrais un truc plus explicite
Client Nombre
APPLE 215
MICROSOFT 317
IBM 28
HP 1986
Je suis en train de faire deux requêtes, et ça m'emm bcp.
La première
SELECT jo_client, count(*) FROM Jobs GROUP BY jo_client
Et la seconde (pas finie) doit, pour chaque donnée reçue de cette
première requête aller dans la table "Clients" pour connaître le nom
du client.
N'y-t-il pas moyen de faire cela en une seule?
Merci beaucoup.
Oli.

Poser une question


Bonjour,
RTFM!
La solution est dans la doc mySQL de la fonction count():
mysql> SELECT student.student_name,COUNT(*)
-> FROM student,course
-> WHERE student.student_id=course.student_id
-> GROUP BY student_name;
C'est toujours très agréable comme réponse...
Si je poste cette question, c'est bien parce que ça fait déjà quelque s
temps que je suis dessus, que j'ai regardé dans les 3 ou 4 bouquins
que j'ai à ma disposition et que j'ai déjà fait pas mal de recherche
sur le net...
OK.
C'est presque ça, puisqu'il me manque une donnée.
Mais je fais avec.
Merci, donc!
Oli.
Bon OK, la prochaine fois j'ajouterai un smiley.
Quelle donnée ?
Ha!
Ça aurait été bcp mieux, de fait.
J'aime bien les smiley!
D'autre part, comment aurais-je pu trouver cette commande de la
manuel?
Le champs "nom du client" (cl_nom) ->
SELECT jo_client, cl_nom, COUNT(*)
FROM Jobs, Clients
WHERE Jobs.jo_client = Clients.cl_id
GROUP BY jo_client
Je le répète: merci...
Oli.
Si on veut faire propre, on met tous les attributs dans le GROUP BY :
SELECT jo_client, cl_nom, COUNT(*)
FROM Jobs, Clients
WHERE Jobs.jo_client = Clients.cl_id
GROUP BY jo_client, cl_nom ;
Ca vous servira, le jour où vous utiliserez un vrai SGBDR.
Cdt,
--
Sébastien