Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème requetes sql imbriquées...

Sujet résolu
    18 février 2011 à 15:30:11

    Bonjour,

    Je cherche à effectuer une requete sql avec

    Nom du groupe, Descripion du groupe, Nombre de Video de produits appartenant au groupe en question et Nombre d'image de produits appartenant au groupe en question


    SELECT COUNT(Image.Num), COUNT(Video.Num), Groupe.Nom, Groupe.Description
    FROM Image, Video, Groupe, Produit
    WHERE Groupe.Num=Produit.NumGroupe
    OR (Image.NumProduit= Produit.Num
    OR Video.NumProduit= Produit.Num)
    Group BY Groupe.Nom, Groupe.Description
    


    j'ai l'erreur suivante :

    COUNT( Image . Num ) COUNT( Video . Num ) Nom Description
    25 25 Côté Salé Présentation de quelques réalisations / Traiteur
    9 9 Entremets Entremets Saveurs & Traditions
    9 9 Evenementiel Présentation de quelques pièces
    9 9 Pâtisserie Quelques réalisations de desserts

    Sauf que je n'ai seulement 1 video, et 5 images environ...
    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2011 à 16:50:40

      Dans ce cas de figure tu es obligé de passer par une sous-requête dans la clause SELECT pour obtenir ce que tu veux.
      SELECT 
         g.Nom
        ,g.Description
        ,(SELECT SUM(i.Num) FROM image i WHERE i.NumProduit = p.Num) as NbImage
        ,(SELECT SUM(v.Num) FROM video v WHERE v.NumProduit = p.Num) as NbVideo
      FROM 
        Groupe g INNER JOIN Produit p 
          ON g.Num=p.NumGroupe
      GROUP BY 
         g.Nom
        ,g.Description
      

      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2011 à 17:25:23

        SELECT 
           g.Nom
          ,g.Description
          ,(SELECT SUM(i.Num) FROM Image i WHERE i.NumProduit = p.Num) as NbImage
          ,(SELECT SUM(v.Num) FROM Video v WHERE v.NumProduit = p.Num) as NbVideo
        FROM 
          Groupe g INNER JOIN Produit p 
            ON g.Num=p.NumGroupe
        GROUP BY 
           g.Nom
          ,g.Description
        


        Merci de ta réponse ! c'est presque ça ! car déjà je n'ai pas d'erreur, mais malheureusement cela ne correspond pas au données : la requete me retourne 1 image, pour 0 vidéo alors qu'il y a 5 images pour 1 video...
        • Partager sur Facebook
        • Partager sur Twitter
          18 février 2011 à 17:25:23

          Le message qui suit est une réponse automatique activée par un modérateur.
          Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
          Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


          Veuillez modifier le titre du sujet


          Bonjour,

          Ce sujet a un titre qui ne décrit pas correctement le sujet, ou il est écrit en majuscules.

          La présentation de votre message étant néanmoins correcte, nous ne fermons pas le sujet, mais vous êtes invité(e) à modifier son titre en éditant votre premier message.

          Cette modification doit être faite dans les plus brefs délais, sans quoi nous serons dans l’obligation de clore le sujet .


          Voici quelques correspondances pour vous aider à choisir au mieux votre titre :




          Comment fait-on pour éditer un titre ?

          Si vous êtes l'auteur du topic, vous pourrez uniquement le changer en éditant le premier post du topic à l'aide de l'icône Image utilisateur.



          Merci de votre compréhension :)
          Les modérateurs.
          • Partager sur Facebook
          • Partager sur Twitter
            21 février 2011 à 10:58:47

            Comme le groupe contient plusieurs produits et que les produits sont associés aux choses que tu veux compter, il faut faire la somme des count()...

            SELECT 
               g.group_id,
               g.Nom,
               g.Description,
               sum(SELECT count(*) FROM image i WHERE i.NumProduit = p.Num) as NbImage
               sum(SELECT count(*) FROM video v WHERE v.NumProduit = p.Num) as NbVideo
            FROM 
              Groupe g INNER JOIN Produit p ON g.Num=p.NumGroupe
            GROUP BY 
               g.group_id
            

            • Partager sur Facebook
            • Partager sur Twitter
              21 février 2011 à 11:55:02

              select distinct g.Nom as Nom, 
              g.Description as Description, 
              (select count(*) from Image i, Produit p where i.NumProduit=p.Num) as nbrI, 
              (select count(*) from Video v, Produit p where v.NumProduit=p.Num) as nbrV 
              From Produit p, 
              Groupe g 
              WHERE p.NumGroupe=g.Num 
              GROUP BY g.Nom, g.Description
              


              Voici la solution... merci tout de même !
              • Partager sur Facebook
              • Partager sur Twitter

              Problème requetes sql imbriquées...

              × 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