Sql : Group by et count
Résolu
velderama
Messages postés
203
Statut
Membre
-
Profil bloqué -
Profil bloqué -
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
ç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 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.
--
4 réponses
-
Bonjour,
Ta requête est bonne. -
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 ?-
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 -
-
-
-
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,...) -