j'ai un souci de jointure...
j'ai 5 tables :
- Stands (idStand,idCreateurStand...)
- Propositions (idProposition, typeAnnonce, stand, idClient...) <-- cette table est en fait une table de liaison entre ce qui est proposé (listé dans typeAnnonces, et celui qui propose (clients), et ou il propose (stand)
- TypeAnnonces (idType, nom...)
- ComptesClients (idClient,Nom...)
- Commentaire (idComm, idProp, idClient, idStand...) <-- idClient est celui qui commente (pas forcement celui qui a creé la proposition)
- votes (idVote, idProp, idClient, idStand, Vote) <-- idClient est celui qui vote (pas forcement celui qui a creé la proposition) et Vote (enum('1','-1'))
j'aimerai listé toutes les propositions (informations dans typeAnnonces) d'un stand (créé par un client) qui comporterait la somme des commentaires, avec une somme positive et une somme négative des votes (+1 et -1) avec pour chaque type de vote un listing de tous les votants (clients aussi) ...
j'aimerai afficher ce type de ligne, par exemple pour que ce soit plus simple :
- -Nom de la proposition 1 (proposé par untel) - X commentaires - 25 votes positifs (à voté : untel1, untel2, untel3...) | 12 votes négatifs (à voté : untel4, untel5, untel6...)
- -Nom de la proposition 2 (proposé par untel) - X commentaires - 32 votes positifs (à voté : untel10, untel222, untel13...) | 2 votes négatifs (à voté : untel45, untel53, untel65...)
- -....
=> nom de la proposition est stocké dans TypeAnnonce qui appartient a un stand.
=> un client peut creer un stand, ajouter des propositions a ce stand, voter et commenter
=> tous les autres clients ont acces a ce stand et peuvent proposer, commenter et voter
Si vous avez suivi jusqu'ici (ouf), ne vous inquiétez pas la question est simple
je pourrai tres bien faire une premiere requete avec jointure simple sur la proposition et typeannonce et apres dans le while refaire des requeste qui me ramenerai chacune des informations... mais cela me semble lourd et gourmand en ressource surtout si j'ai 150 propositions a lister avec chacune 50 votes et 30 commentaires ! !!
puis-je faire tout ca en une seule requete ?? avec une jointure externe ou interne (j'ai jamais utilisé ça !) ??
et finalement est-ce que cela serait reelement moins gourmand ou je me fais une idée fausse du bouclage de requete...
jusqu'ici j'en suis la :
SELECT P.*, T.*, C.*, COUNT(CM.idCommentaire) as NbComm
FROM propositions P
LEFT OUTER JOIN TypeAnnonces T
ON P.idType = T.idType
LEFT OUTER JOIN Client C
ON P.idClient = C.idClient
LEFT OUTER JOIN Commentaires CM
ON CM.idType=P.idType
WHERE and P.idStand=1 and P.idStand = CM.idStand
et j'ai pas encore inclu les votes !!!bref cette requete ne m'affiche q'un resultat avec la somme de tous les commentaires de base....
j'ai essayé avec INNER JOIN, c pareil...
si vous pouviez m'aiguiller, me mettre sur la voie (jointure interne, externe ? multi requetes???) je vous en serait bien reconnaissant !!
merci d'avance.... et désolé pour le temps de lecture...