Sql : Group by et count

Résolu
velderama Messages postés 203 Statut Membre -  
 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.



--

4 réponses

  1. termgsi Messages postés 678 Date d'inscription   Statut Membre Dernière intervention   39
     
    Bonjour,

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