problème av une requete

problème av une requete - SQL/NoSQL - Programmation

Marsh Posté le 14-01-2003 à 22:51:30    

Bonjour g un problème avec la requete suivante.
C pour un syteme de news av vote + commentaire, mais sur la page principale je veux affcher la moyenne et le nombre des votes et le nombre de commentaire.  

Code :
  1. SELECT news.id,news.news,
  2.   COUNT(vote_news.id_news) as num,
  3.   AVG(vote_news.note) as note,
  4.   COUNT(commentaire.id_news2) as numcom
  5. FROM news
  6. LEFT JOIN commentaire
  7.   ON news.id = commentaire.id_news2
  8. LEFT JOIN vote_news
  9.   ON news.id = vote_news.id_news
  10. GROUP BY news.id,news.news


voila,
mais ca me fait des produits cartésiens entre les tables vote_news et commentaire.
Ca me parait logique mais j aimerais savoir si sur base de celle la je peux resoudre mon problème en ajoutant/modifiant l'une ou l autre clause, sinon quel solution me reste-t-il?(je veux dire la meilleur d après vous)
Merci de votre aide  :)


Message édité par Nico5779 le 15-01-2003 à 19:31:16
Reply

Marsh Posté le 14-01-2003 à 22:51:30   

Reply

Marsh Posté le 15-01-2003 à 17:48:41    

:bounce:  :(

Reply

Marsh Posté le 15-01-2003 à 18:01:15    

Je pense que tu aurais plus de réponses si ta requete était un peu plus lisible.
 
Essaie de capser au moins les mots clés de la requête, je t'assure que ça ira bien mieux, car dans son état actuel, elle est imbuvable


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-01-2003 à 18:55:56    

:jap:  voila g capser les tokens et g virer tout ce qui n entrait pas en compte dans mon problème.
 
ps: si tu resoud mon prob, je vote pour toi (dans l'autre topic) avec tout mes mutlinick  :D


Message édité par Nico5779 le 15-01-2003 à 19:04:00
Reply

Marsh Posté le 15-01-2003 à 19:25:13    

Nico5779 a écrit :


 

Code :
  1. SELECT news.id,news.news,
  2.   COUNT(vote_news.id_news) as num,
  3.   AVG(vote_news.note) as note,
  4.   COUNT(commentaire.id_news2) as numcom
  5. FROM news
  6. LEFT JOIN commentaire
  7.   ON news.id = commentaire.id_news2
  8. LEFT JOIN vote_news
  9.   ON news.id = vote_news.id_news
  10. GROUP BY news.id,news.news


 


 
tu trouves pas que c encore plus lisible comme ca ?

Reply

Marsh Posté le 15-01-2003 à 19:32:08    

si... edited... :jap:

Reply

Marsh Posté le 15-01-2003 à 23:25:39    

:bounce:  un dernier up...  :(  

Reply

Marsh Posté le 15-01-2003 à 23:40:03    

si tu essaies de faire 2 requêtes ?


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-01-2003 à 23:49:40    

faire un union ca marchera pas puisque les tuples seront diffrent.
faire une requete dans une boucle c ca que je veux eviter.
 
Mais bon ca me prend trop la tete je v simplement faire la requete sur deux tables et rajouter un champs avec le nombre de commentaire que j incrémente/decrémente

Reply

Marsh Posté le 15-01-2003 à 23:51:42    

me parait pas idiot effectivement de stocker le nb de commentaires dans la tables news.
Ca peut alléger tes requetes.


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-01-2003 à 23:51:42   

Reply

Marsh Posté le 15-01-2003 à 23:55:13    

latruffe a écrit :

me parait pas idiot effectivement de stocker le nb de commentaires dans la tables news.
Ca peut alléger tes requetes.


 
wep,je pense que y as pas vraiment le choix.

Reply

Marsh Posté le 15-01-2003 à 23:58:44    

j'ai une question (peut etre bete) :
 
quelle est l'utilité de la jointure a gauche dans ton cas ?

Reply

Marsh Posté le 16-01-2003 à 00:06:05    

HappyHarry a écrit :

j'ai une question (peut etre bete) :
 
quelle est l'utilité de la jointure a gauche dans ton cas ?


 
sinon y prend pas les tuples pour lesquel y as pas de vote (ou commentaire)

Reply

Marsh Posté le 16-01-2003 à 00:07:53    

Nico5779 a écrit :


 
sinon y prend pas les tuples pour lesquel y as pas de vote (ou commentaire)


 
ca va alors, tu sais ce que tu fais ;)
 
par contre y a un truc qui me gene dans ta requete, mais j'arrive pas encore a mettre le doigt dessus :/


Message édité par HappyHarry le 16-01-2003 à 00:08:27
Reply

Marsh Posté le 16-01-2003 à 00:23:02    

lol, :whistle:  
pareil pour la req :/
pourtant g deja vu des sites avec ses 2 features ensembles,chuis sur que ca soit doit etre possible en 1 req...

Reply

Marsh Posté le 16-01-2003 à 01:41:50    

bein.. vi.. c possible... :D
 
enfin, si g bien compris son truc... c kil veut faire 2 requetes en une ?! :)
 
Et pis... je dirais qu'il manque un chtit opérateur du genre AND ou Or ou un truc du genre :p
A moins que le langage utilisé le devine tout seul...
 
Bref, g pas encore trop regardé la question.. mais jy jetterai un oeil des que posible :D

Reply

Marsh Posté le 22-01-2003 à 06:40:33    

Euh ... j'ai l'impression que tu vois pas bien les ensembles que tu manipules là ...  
Mais avant d'aller plus loin, je veux comprendre qqchose :
Si j'ai bien compris la clé primaire pour les news c'est juste id_news ? Si oui, à priori le GROUP BY id_news suffit ...
 
Mais bon c'est qu'un détail p/r au vrai pb ...
Je ne connais pas MySQL (en tout cas loin derrière Sybase voire Oracle), mais si tu as la possibilité de créer une table temporaire, tu peux décomposer en 4 étapes :
1/ Gérer le cas des tuples qui ont des commentaires et des votes
2/ Gérer le cas des tuples qui ont des commentaires mais pas de votes
3/ Gérer le des tuples qui ont des votes mais pas de commentaires
4/ Gérer le cas des tuples qui n'ont ni l'un ni l'autre
 
En tout cas ca sent l'union ca ... :D
Par contre en terme de perfs, ca risque de mal monter en charge surtout si cé sur la page principale et que ca risque d'être sollicité en grand nombre (à moins qu'il y ait un connexion pooling "raisonnable" ) ...
Le mieux serait que tu gères, au fur et à mesure, des compteurs pour chaque news (encore que au niveau verrouillage ca risque d'être beurk ... je connais pas MySQL à ce niveau là ) ...
En espérant que ca t'aura aidé un tout petit peu ...  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed