SQL 3 tables joint, resultat sur 1er jointure

Résolu/Fermé
kisscool387
Messages postés
260
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
20 août 2016
- Modifié par kisscool387 le 2/04/2012 à 23:13
kisscool387
Messages postés
260
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
20 août 2016
- 8 avril 2012 à 22:57
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

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

3 avril 2012 à 00:10
je t'avoue que je n'ai pas tout lu, mais avec DISTINCT tu as essayé ???

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

6 avril 2012 à 22:15
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
kisscool387
Messages postés
260
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
20 août 2016
11
8 avril 2012 à 22:57
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
kisscool387
Messages postés
260
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
20 août 2016
11
3 avril 2012 à 15:36
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