Sql : Group by et count

Résolu/Fermé
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 - 11 mars 2011 à 10:36
 Profil bloqué - 11 mars 2011 à 11:58
Bonjour,

ça fait un moment que j'ai plus fait de requête sql et j'ai quelques doutes quand à ma requête...

J'ai 2 tables liées en n<--->n : TA(idta,nomta,...) et TB(idtb,nomtb,...)
ce qui donne lieu à une troisième table TAB (idta2,idtb2,toto,...)

Ce que je veux faire est de compter nombre de idta pour chaque idtb

select nomitdb,count(TA.idta) as nombreTA
from TA,TB,TAB
where TA.idta =TAB.idta2 and TB.idtb = TAB.idtb2
group by TB.idtb 


ça a l'air correct mais je ne suis pas très très sûr j'ai besoin d'un autre oeil la-dessus :)

Merci.



--
A voir également:

4 réponses

termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
11 mars 2011 à 10:43
Bonjour,

Ta requête est bonne.
1
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
11 mars 2011 à 10:55
merci termgsi :)

Si je peux me permettre une dernière question :

dans la table TA j'ai des dates et j'aimerai calculer la dernière date de modification

la table TA : TA(idta,nomta,derniereMisAjour)

ce qui donne :

select TB.nomitdb,count(TA.idta) as nombreTA, TA.derniereMisAjour
from TA,TB,TAB
where TA.idta =TAB.idta2 and TB.idtb = TAB.idtb2
group by TB.idtb 


Je crains comme j'ai fait que la date calculée ne soit que la derniere date quand je fais mon groupement...Qu'en pensez-vous ?
0
Profil bloqué
11 mars 2011 à 11:24
Change avec ceux-ci :

select TB.nomitdb,count(TA.idta) as nombreTA, MAX(TA.derniereMisAjour)
from TA,TB,TAB
where TA.idta =TAB.idta2 and TB.idtb = TAB.idtb2
group by TB.idtb

Pour avoir la dernière il faut mettre l'opérateur MAX devant qui te retournera la derniere mise à jour la plus haute donc la derniere
0
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
11 mars 2011 à 11:25
Je ne comprens pas bien ce que tu veux dire par calculé la dernière date de modif
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
11 mars 2011 à 11:26
merci :)
0
Profil bloqué
11 mars 2011 à 11:21
Elle n'est pas bonne la requête!!!

Il y a une erreur dans le "where"

Change ça : where TA.idta =TAB.idta2 and TB.idtb = TAB.idtb2 par ça : where TA.idta =TAB.idta and TB.idtb = TAB.idtb

Mais ton association qui devient une table est fausse!!!

Ta table doit être ceux-ci : TAB (idta,idtb,toto,...)
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
11 mars 2011 à 11:31
Mais dans la "table de liaison" , que je n'ai pas créer au passage, je n'ai pas les attributs idta... j'ai juste juste idta2 et idtb2 qui sont les clés primaires de cette table TAB...

Merci pour vos remarque!
0
Profil bloqué
11 mars 2011 à 11:32
C'est quel logiciel qui te créé la table TAB?
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
11 mars 2011 à 11:35
win'design
0
Profil bloqué
11 mars 2011 à 11:37
Etonnant^^
Ce n'est pas du tout normal!!
Tu n'as que 3 tables dans ton modèle relationnel???

TA(idta,nomta,...)
TB(idtb,nomtb,...)
TAB (idta2,idtb2,toto,...)

C'est bien ça?
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
11 mars 2011 à 11:41
j'ai mis les tables dans ma photo de profil ;)
0
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 10
11 mars 2011 à 11:46
Sujet fermé, Merci à tout le monde ;)
0
Profil bloqué
11 mars 2011 à 11:58
tu as réussi alors?
0