Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1037 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  problème av une requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème av une requete

n°286417
Nico5779
Posté le 14-01-2003 à 22:51:30  profilanswer
 

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
mood
Publicité
Posté le 14-01-2003 à 22:51:30  profilanswer
 

n°286987
Nico5779
Posté le 15-01-2003 à 17:48:41  profilanswer
 

:bounce:  :(

n°286992
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-01-2003 à 18:01:15  profilanswer
 

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)
n°287020
Nico5779
Posté le 15-01-2003 à 18:55:56  profilanswer
 

: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
n°287042
HappyHarry
Posté le 15-01-2003 à 19:25:13  profilanswer
 

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 ?

n°287046
Nico5779
Posté le 15-01-2003 à 19:32:08  profilanswer
 

si... edited... :jap:

n°287162
Nico5779
Posté le 15-01-2003 à 23:25:39  profilanswer
 

:bounce:  un dernier up...  :(  

n°287166
latruffe
Bdovore
Posté le 15-01-2003 à 23:40:03  profilanswer
 

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 !
n°287171
Nico5779
Posté le 15-01-2003 à 23:49:40  profilanswer
 

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

n°287175
latruffe
Bdovore
Posté le 15-01-2003 à 23:51:42  profilanswer
 

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 !
mood
Publicité
Posté le 15-01-2003 à 23:51:42  profilanswer
 

n°287176
Nico5779
Posté le 15-01-2003 à 23:55:13  profilanswer
 

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.

n°287177
HappyHarry
Posté le 15-01-2003 à 23:58:44  profilanswer
 

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

n°287179
Nico5779
Posté le 16-01-2003 à 00:06:05  profilanswer
 

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)

n°287181
HappyHarry
Posté le 16-01-2003 à 00:07:53  profilanswer
 

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
n°287185
Nico5779
Posté le 16-01-2003 à 00:23:02  profilanswer
 

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...

n°287209
wouatouwou​atou
Posté le 16-01-2003 à 01:41:50  profilanswer
 

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

n°291519
Zzozo
Un peu, passionément, à la fol
Posté le 22-01-2003 à 06:40:33  profilanswer
 

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:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  problème av une requete

 

Sujets relatifs
[mySQL] Problème de requête avec count(*) [résolu]Requête SQL sur controle ADO - Problème
probleme d'affichage lors d'1 requete SQL[SQL]probleme avec une requete
[MYSQL] Problème de requêteProbleme avec la requete MySQL UPDATE
Problème de requete SQL avec moteur JET MS-AccessProblème avec une requête SQL
Problème de somme dans requête SQLProbleme d'écriture de requete en SQL :
Plus de sujets relatifs à : problème av une requete


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR