Sql : Group by et count

Résolu
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   -  
 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

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   Statut Membre Dernière intervention   39
 
Bonjour,

Ta requête est bonne.
1
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
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é
 
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   Statut Membre Dernière intervention   39
 
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   Statut Membre Dernière intervention   10
 
merci :)
0
Profil bloqué
 
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   Statut Membre Dernière intervention   10
 
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é
 
C'est quel logiciel qui te créé la table TAB?
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
win'design
0
Profil bloqué
 
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   Statut Membre Dernière intervention   10
 
j'ai mis les tables dans ma photo de profil ;)
0
velderama Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   10
 
Sujet fermé, Merci à tout le monde ;)
0
Profil bloqué
 
tu as réussi alors?
0