un script de statistique

Nouveau WRInaute
j'aimerai faire un script de statistique qui me donne le nombre de clients qui ont prêté au moins deux livres. voici la table
pret
id INT
client_id INT
livre_id INT
status (' pret', ' libre')
client
id INT (correspond à client_id dans la table pret

livre
id INT (correspond à livre_id dans la table pret

voilà le probleme qui se pose: un client peut prêter plusieurs livres
dans la table pret le client_id nr1 à lui seul a prêter 3 livres. comment faire une requete qui me donne ceci :
client_id nr1 3livres
client_id nr2 1livres
..
etc

et qu'à la fin
j'ai nbre total des clients= x
nbre des clients qui ont prêter au moins 1 livre= Y
nbre nbre des clients qui ont prêter au moins 2 livres= Z
la requte pour le nbre total des clients c'est facile je l'ai déjà fait.
mysql_query("SELECT COUNT (*)as nbre_total FROM client) et ca marche.
pour le reste j'arrive pas.
Merci de bien vouloir m'aider.
 
WRInaute occasionnel
Essaies ça :
Code:
SELECT 
COUNT(livre_id) AS nb_livres, 
client_id 
FROM pret 
GROUP BY client_id 
ORDER BY client_id
Ca donne quoi?
 
Nouveau WRInaute
Dans la table pret il ya sur 5 clients 4 qui ont prêté minimum un livre
1client a preter 2 livres et les autres un seul
ta requete me donne 2 .
ce que je veux c'est ceci
nbre de client qui ont preté au moins un ivre donc 4
nbre de client qui ont preté au moin 2 livres donc 1
nbre de livre emprunter
merci de ton aide
 
WRInaute accro
Tu peux rajouter un HAVING count(livre_id) > 1 pour n'avoir que ceux qui ont emprunté au moins 2 livres :)
 
Nouveau WRInaute
merci je vais d'abord me debrouiller avec ce que tu m'as donné et vers 14heures je te dirai si ca a marché ou pas. tu sera là online à ou avant 14h?
 
WRInaute occasionnel
Remercie Yoyos, je sais pas si j'aurais trouvé cette année sinon :oops: :
Code:
SELECT
COUNT(livre_id) as nb_livres,
client_id
FROM pret
GROUP BY client_id HAVING COUNT(livre_id) > 2
ORDER BY nb_livres DESC

Edit : Trop tard...
 
Nouveau WRInaute
salut tout le monde, je reviens à la charge.
j'ai fait la requête suivante :
SELECT
COUNT(livre_id) as nb_livres,
client_id
FROM pret
GROUP BY client_id HAVING COUNT(livre_id) > 2
ORDER BY nb_livres DESC

et voici le resulat. La requête trouve 4 fois nbre livre comment faire pour obtenir 4 au lieu de ce j'ai.

nbre livre2
nbre livre1
nbre livre1
nbre livre1
 
WRInaute accro
Je vais voir mais tes explications sont pas très claires :(

Et pourquoi mets-tu HAVING COUNT(livre_id) > 2 alors que tu veux avoir ceux qui ont au moins 2 livres, tu n'aurais que ceux qui auront + de 2 livres comme ça.
 
WRInaute accro
vérité a dit:
voilà le probleme qui se pose: un client peut prêter plusieurs livres
dans la table pret le client_id nr1 à lui seul a prêter 3 livres. comment faire une requete qui me donne ceci :
client_id nr1 3livres
client_id nr2 1livres
..

Requete 1:

Code:
SELECT client_id, COUNT(livre_id) as nb_livres
FROM pret
GROUP BY client_id 
HAVING COUNT(livre_id) >= 2
ORDER BY nb_livres DESC

vérité a dit:
et qu'à la fin
j'ai nbre total des clients= x
nbre des clients qui ont prêté au moins 1 livre= Y
nbre nbre des clients qui ont prêter au moins 2 livres= Z

Requête (pour le nb de client qui ont prêté au moins un livre)
Code:
SELECT count(C.id) as nb_clients
FROM client AS C,pret AS P
WHERE C.id = P.client_id
GROUP by C.id [color=red]Je suis pas sure si c'est obligatoire[/color]
HAVING count(P.livre_id) >= 1 ;

Requête (pour le nb de client qui ont prêté au moins deux livres)
Code:
SELECT count(C.id) as nb_clients
FROM client AS C,pret AS P
WHERE C.id = P.client_id
GROUP by C.id [color=red]Je suis pas sure si c'est obligatoire[/color]
HAVING count(P.livre_id) > 1 ;


Voila, j'ai ptet fait des erreurs, je n'ai rien pour tester et ça fait pas mal de temps que j'en ai pu fait ^^
 
Discussions similaires
Haut