IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Select sur 3 tables et 2 count()


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut Select sur 3 tables et 2 count()
    Bonjour à tous !

    Voilà, j'ai un petit souci avec une requête que je n'arrive pas à ecrire convenablement !
    En gros, pour un forum, j'ai :
    - une table f_section qui contiendra les sections de mon forum,
    - une table f_discut, qui contiendra les discutions et qui rappel l'identifiant de la section à laquelle elle apartient,
    - une table f_reponse, qui contiendra toutes les réponses et qui, rappel l'indentifiant de la discussion à laquelle elle apartient.

    Le but de ma requête sera de créer un regroupement de mes sections et d'en récupérer le nombre de discussion et le nombre de réponse qui composent chacune de ces sections.

    Actuellement, j'ai un jeu d'essai (ci-joint d'ailleur en cas), qui devrait me donner (où : id section, nb discut, nb reponse) :
    1 | 2 | 4
    2 | 0 | 0
    3 | 1 | 2
    4 | 0 | 0

    Malheureusement, il me retourne :
    1 | 4 | 4
    2 | 0 | 0
    3 | 2 | 2
    4 | 0 | 0

    Voici ma requête qui m'embête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT S.id, COUNT(D.id) AS nbdiscut, COUNT(R.id) AS nbreponse 
    FROM f_section S 
      LEFT JOIN f_discut D ON S.id = D.id_section 
      LEFT JOIN f_reponse R ON D.id = R.id_discut 
    GROUP BY S.id
    Par avance merci pour tout coup de main !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Par défaut modifier ta requete
    bonjour
    voila je propose pour ton probleme l'ajout de "group by f_discut.id" dans ta requete
    j'espere que ca y ira.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    En fesant ça, j'obtiens bêtement :

    1 | 3 | 3
    1 | 1 | 1
    2 | 0 | 0
    3 | 2 | 2
    4 | 0 | 0

    On voit bien qu'il ne compte pas le nombre de discussion indépendament des réponses...
    Ce qui est bizare dans cette histoire c'est que si je décide de counter soit mes réponses, soit mes discussions, tout se passe bien !
    Par contre, dés que je souhaite faire les deux, ça part en sucette... les count du nombre de discussion ne fonctionnent plus

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Bon... aprés une série d'essais infructueux, je me suis "résigné" a passer par une imbrication...

    Voilà la requête au final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT S.id, COUNT(R.id) AS nbreponse, 
           (SELECT COUNT(id) 
            FROM f_discut 
            WHERE f_discut.id_section=S.id) AS nbdiscut 
     
    FROM f_discut AS D 
      LEFT JOIN f_section AS S 
        ON D.id_section = S.id 
      LEFT JOIN f_reponse AS R 
        ON D.id = R.id_discut 
    GROUP BY S.id;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/02/2007, 14h41
  2. un seul SELECT sur plusieurs tables ?
    Par deloo dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/09/2005, 12h57
  3. select sur 3 tables
    Par berry dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/05/2005, 01h05
  4. selection sur une table en fonction de plusieurs ligne
    Par dimdidi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/12/2004, 08h42
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo