Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de requete MySQL complexe

    20 juillet 2010 à 12:21:12

    Bonjour,

    J'ai un problème pour créer ma requete MySQL

    Je dispose de 3 tables :
    - Une table T1
    - Une table T2 qui possède une liaison avec T1
    - Une table T3 qui possède une liaison avec T1

    Je souhaiterai sélectionner des informations de la table T1,
    Compter le nombre d'élément dans la table T2 qui possède l'identifiant de T1,
    Compter le nombre d'élément dans la table T3 qui possède l'identifiant de T1,
    Compter le nombre d'élément dans la table T3 qui possède le champ state à 1 et qui possède l'identifiant de T1
    Afficher uniquement les éléments de T1 où state de T3 >= 1

    Voilà ma requete, qui ne fonctionne pas :

    SELECT t1.*, COUNT(t2.id) AS t2count, COUNT(t3.id) AS t3count,
    (SELECT COUNT(id) FROM t3 WHERE id = t1.id AND state = 1) AS state
    FROM t1
    LEFT JOIN t2 ON t1.id = t2.id
    LEFT JOIN t3 ON t1.id = t3.id
    GROUP BY t1.id HAVING state >= 1
    


    Quelqu'un saurait comment faire ? D'où viendrai mon problème ?

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      20 juillet 2010 à 12:22:58

      ton post aurait plus sa place dans la partie base de données du forum. Tu y aurait peut-être plus de réponses.
      • Partager sur Facebook
      • Partager sur Twitter
        20 juillet 2010 à 12:27:09

        Ah c'est nouveau.. je l'avais pas vu celui ci de forum, si on peut me le déplacer...?
        • Partager sur Facebook
        • Partager sur Twitter
          20 juillet 2010 à 17:56:17

          Tu ne mets pas de WHERE sur t1 donc on peut modifier l'ordre des JOIN assez simplement, et :

          SELECT t1.*, t3g.*, t2g.*
          FROM 
          (SELECT id, count(*) AS t3c, sum(state>=1) AS t3s FROM t3 GROUP BY id HAVING t3s>0) AS t3g
          JOIN t1 ON (t1.id=t3g.id)
          LEFT JOIN (SELECT id, count(*) AS t2c FROM t2 GROUP BY id) AS t2g
            ON (t2g.id=t3.id)
          
          • Partager sur Facebook
          • Partager sur Twitter

          Problème de requete MySQL complexe

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown