par
diice » 26 févr. 2014, 01:15
bonjour,
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...
bonjour,
j'ai un souci de jointure...
j'ai 5 tables :
- [b]Stands[/b] (idStand,idCreateurStand...)
- [b]Propositions[/b] (idProposition, typeAnnonce, stand, idClient...) [i]<-- 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)[/i]
- [b]TypeAnnonces[/b] (idType, nom...)
- [b]ComptesClients[/b] (idClient,Nom...)
- [b]Commentaire[/b] (idComm, idProp, idClient, idStand...) [i]<-- idClient est celui qui commente (pas forcement celui qui a creé la proposition)[/i]
- [b]votes[/b] (idVote, idProp, idClient, idStand, Vote) [i]<-- idClient est celui qui vote (pas forcement celui qui a creé la proposition) et Vote (enum('1','-1'))[/i]
j'aimerai listé toutes [b]les propositions[/b] (informations dans typeAnnonces) d'un [b]stand[/b] (créé par un [b]client[/b]) qui comporterait [b]la somme des commentaires[/b], avec une [b]somme positive[/b] et une [b]somme négative[/b] des votes (+1 et -1) avec pour chaque type de vote [b]un listing de tous les votants [/b](clients aussi) ...
j'aimerai afficher ce type de ligne, par exemple pour que ce soit plus simple :
[list=1]-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...)[/list]
[list=2]-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...)[/list]
[list=3]-....[/list]
=> [u]nom de la proposition[/u] est stocké dans [b]TypeAnnonce[/b] qui appartient a un stand.
=> [b]un client[/b] peut creer un [b]stand[/b], ajouter des [b]propositions[/b] a ce stand, [b]voter[/b] et [b]commenter[/b]
=> [b]tous les autres clients[/b] ont acces a ce stand et peuvent [b]proposer[/b], [b]commenter[/b] et [b]voter[/b]
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 :
[sql]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
[/sql]
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...