SQL 3 tables joint, resultat sur 1er jointure [Résolu/Fermé]

Signaler
Messages postés
260
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
20 août 2016
-
Messages postés
260
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
20 août 2016
-
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

Messages postés
39
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
24 juillet 2015

je t'avoue que je n'ai pas tout lu, mais avec DISTINCT tu as essayé ???

SELECT DISTINCT G.cid, F.date, .....
Messages postés
260
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
20 août 2016
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.
Messages postés
39
Date d'inscription
vendredi 10 décembre 2010
Statut
Membre
Dernière intervention
24 juillet 2015

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 ^^)
Messages postés
260
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
20 août 2016
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 !
Messages postés
260
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
20 août 2016
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.