Requete count

Fermé
sara - 16 févr. 2010 à 13:41
 sara - 16 févr. 2010 à 15:01
Bonjour,
j'ai fait une requete sql,pour compter le nombre de fois ou la valeur d'un attribut "effectué" egale a 0 pour chaque utilisateur,mais je ne sai pa comment faire le count,
merci bcp de m'aider

3 réponses

garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
16 févr. 2010 à 13:43
montre nous ce que tu as fait pour l'instant et on corrigera (faudrai pas qu'on pense que tu nous donne tes exo a faire ^^)
0
hh oui je ss désolé j ai cru que j'ai copier la requete, bon voila;
SELECT tab_departement.id_dept, tab_user.id_user, tab_user.nom_user, tab_user.prenom_user, tab_user.nature_user, tab_seance.effectue, tab_seance.date_seance
FROM (tab_departement INNER JOIN tab_user ON tab_departement.id_dept = tab_user.departement) INNER JOIN ((tab_matiere INNER JOIN tab_enseignement ON tab_matiere.id_mat = tab_enseignement.id_mat) INNER JOIN tab_seance ON tab_matiere.id_mat = tab_seance.id_mat) ON tab_user.id_user = tab_enseignement.id_user
WHERE (((tab_departement.id_dept)=1) AND ((tab_user.nature_user)=3) AND ((tab_seance.effectue)="0"));
merci
0
garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
16 févr. 2010 à 14:16
bon ben désolé mais moi les inner join dans tout les sens j'y pige rien ^^'
j'ai fait une représentation des tables que tu a mi dans ta requete et les champs (pour ma compréhension personnel) et j'en ai rajouté quelques un pour que ca soit plus complet
schéma:
tab_departement(id_dept,libelle)
tab_user(id_user,#departement,nature_user)
tab_matiere(id_mat,libelle)
tab_enseignement(#id_mat,#id_user)
tab_seance(id_seance,#id_mat,effectue)

requète:
select tab_user.id_user,count(*) as nb_effectue_eg_0
from tab_user,tab_enseignement,tab_seance,tab_matiere
where tab_user.id_user=tab_enseignement.id_user
and tab_enseignement.id_mat=tab_matiere.id_mat
and tab_matiere.id_mat=tab_seance.id_mat
and tab_seance.effectue="0"
group by tab_user.id_user

la requete compte le nombre d'effectué = "0" pour chaque user (avec le group by), je n'ai pas mis le département =1
0
est ce que c necessaire de mettre le groupe by dans une requete ou il ya count??
0
garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
16 févr. 2010 à 14:37
s'il faut grouper par utilisateur alors on utilise un group by
par exemple sans le group by il y a un total de 100 lignes et 10 utilisateurs
le résultat ferai 100 lignes avec a chaque ligne l'id de l'utilisateurs répertorié avec a coté le nombre 100
avec le group by ca ne ferai plus que 10 lignes mais le nombre a coté variera en fonction du nombre de ligne pour chaque utilisateurs
(c'est un peu dur a expliquer comme ca ^^')

mais tu peu tester toi même avec et sans le group by

note que dans ta premiere requète tu n'as pas utilisé de count, ce qui fait que ca ne compte rien. je ne suis pas capable de comparer tes inner join avec mes jointures basiques (mais compréhensible :P) donc je ne peu pas dire si nos deux requètes donnerai le même résultat si tu ajoute un count(*) a la tienne
0
ok merci bcp pour l explication
bonne journée
0