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.



--

4 réponses

termgsi
Messages postés
678
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
3 novembre 2016
40
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
40
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