8795 sujets

Développement web côté serveur, CMS

Bonjour a tous,
voici mon probleme, je travaille actuellement sur un projet de gestion d'une bibliothèque de disques, et je voudrais via une requete SQL récupérer une liste des adhèrents ayant emprunté plus d'un disque.

Voici comment se presente ma base :

- > table adherents( code_adhedrent, nom_adherent,age_adherent)
- > table disques (code_disque, nom_disque, artiste_disque)
- > table louer (code_disque, code_adherent,date_location)

J'ai pensé faire une chose du genre :
SELECT COUNT( l.code_disque ) AS NB, l.code_adherents, a.nom
FROM louer l, adherents a
WHERE a.code_adherents = l.code_adherent
GROUP BY a.code_adherent


Mais cela me retourne le nombre total disques empruntés par adhérents,
-> BOB : 1
-> BLANC : 3
->Jim : 4
-> Val : 10

Or ce que je souhaiterais c'est un rendu ne retournant que ceux qui ont emprunté plus d'un disque :
-> BLANC : 3
->Jim : 4
-> Val : 10

Quelqu'un aurait-il une idée?



NOTE: J'ai essayé de mettre mon résultat de COUNT dans NB {COUNT(*) as NB} et de le mettre en condition dans mon WHERE {NB > 1} mais SQL me dis qu'il ne connait pas NB ^^...
Je suis encore un débutant en SQL .
<?php
$query = mysql_query('SELECT code_adhedrent AS id, nom_adherent,age_adherent 
                               FROM adherents
                               LEFT JOIN louer ON louer.code_adherent = id');
while($data = mysql_fetch_assoc($query)) {
   if(!isset($adr[$data['id']])) $adr[$data['id']]= 1;
   else $adr[$data['id']]++;
}

print_r($adr);
?>
@Steber23 : C'est bien la peine de s'inscrire pour répondre une ânerie... Même si cela fonctionne, cette tâche incombe à MySQL et non PHP et de surcroît on ne sait pas si la personne qui a écrit le sujet utilise PHP.

Il est possible de le faire de plusieurs façon directement dans la requête SQL, si t'as requête fonctionne alors en rajoutant :

HAVING NB > 1


juste après le GROUP BY devrait fonctionner...
merci de vos réponses,
finalement j'ai décidé de céder à la facilité , j'ai donc rajouté un champs nb_emprunt dans ma table carte.

A partir de là, il ne reste plus qu'a faire une compraison dans la clause WHERE :
WHERE a.code_adherents=c.code_carte AND c.nb_emprunt>1


En tout cas encore un grand merci à vous tous Smiley cligne
Salut,
blobi a écrit :
finalement j'ai décidé de céder à la facilité , j'ai donc rajouté un champs nb_emprunt dans ma table carte.

Tu encombres ta table d'une colonne d'autant plus superflue que la solution de skywalk3r facilite les choses : avec ta solution, tu dois mettre à jour ta colonne faisant office de compteur chaque fois qu'un utilisateur effectue un nouveau prêt : on ne peut pas dire que c'est très optimisé. Smiley rolleyes