SQL 3 tables joint, resultat sur 1er jointure

Résolu
kisscool387 Messages postés 269 Statut Membre -  
kisscool387 Messages postés 269 Statut Membre -
Bonjour,

Voilà, j'ai une requête avec 3 tables jointes (a, b et c).
a joint avec b, et b joint avec c
Je voudrais sortir le nombre de résultat trouvé sur la table b en tenant compte uniquement de la jointure entre a et b ?
Voici ma requête SQL :

SELECT G.cid, F.date, MAX(F.url2), COUNT(DISTINCT F.sid), COUNT(C.im_id) FROM GALLERY_CAT_TABLE AS G LEFT OUTER JOIN GALLERY_TABLE AS F ON G.cid = F.cat LEFT OUTER JOIN COMMENT_TABLE AS C ON F.sid = C.im_id WHERE C.module = 'Gallery' AND G.cid != '25' GROUP BY G.cid ORDER BY COUNT(C.im_id) DESC LIMIT 0, 10


sur cette requête, je classe les catégories de photos par nombre de commentaires posté sur toute les photos d'une catégorie.
Exemple : si G.cid = 15, je trouve 50 photos correspondante dans la table "GALLERY" et 200 commentaires posté sur ces 50 photos.
Si je fait un COUNT(F.sid) je trouve 200 ! alors que il y a pourtant que 50 photos, c'est a cause de la jointure avec la table "COMMENT" qui reli les 200 commentaires aux 50 photos, alors comment trouver le nombre de photos dans la catégorie ?

Je sais que ma demande est plutot compliqué, mais si quelqu'un connait bien le language SQL, et qu'il prend le temps de comprendre mon probléme, je suis sûr qu'il pourra m'aidé.

Je remerci d'avance toutes les personnes qui pourrai se pencher sur mon probléme, et s'il faut plus d'explication, n'hésitez surtout pas à me demander.

3 réponses

  1. k.mestdagh Messages postés 42 Statut Membre
     
    je t'avoue que je n'ai pas tout lu, mais avec DISTINCT tu as essayé ???

    SELECT DISTINCT G.cid, F.date, .....
    0
  2. kisscool387 Messages postés 269 Statut Membre 11
     
    Merci pour ta réponse k.mestdagh

    Et oui, j'ai essayé avec DISTINCT, mais ça ne change rien malheureusement.
    En faite, il me faudrait un COUNT() mais sans les doublons.
    0
    1. k.mestdagh Messages postés 42 Statut Membre
       
      Et si tu fais un alors un
      DISTINCT
      dans ton
      COUNT()

      ex:
      SELECT A.name, COUNT(DISTINCT B.title)
      FROM authors A, books B
      WHERE A.id = B.id_authors
      


      car si je comprend bien tu as plusieurs fois le meme auteurs qui ressort avec chaque fois un nouveau total de livres... (dans cet exemple ci biensûr ^^)
      0
    2. kisscool387 Messages postés 269 Statut Membre 11
       
      Merci, mais si tu regarde ma requête, c'est d'éjà ce que j'avais fait, mais ça ne change rien.
      Aprés plusieur essai, je pensse que c'est impossible.
      La seul solution, c'est d'exécuter une 2éme requêtte pour trouver le nombre de photo dans une catégorie.
      Mais je pense que pour le SQL 6, ça pourrai être une amélioration à prendre en compte, juste un count() sans doublons, ça serai merveilleux !
      0
  3. kisscool387 Messages postés 269 Statut Membre 11
     
    Bon, j'ai exécuter une 2éme requette dans la 1er pour sortir le bon nombre de photos dans la catégorie, et si je trouve mieux, je viendrais le poster ici.

    k.mestdagh merci de ton aide.
    0