[Réglé] [MySQL] Requête qui ne retourne pas toutes les news...

Requête qui ne retourne pas toutes les news... [Réglé] [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 20-01-2007 à 04:01:02    

Bonsoir à tous :)
 
J'ai un petit soucis sur une requête MySQL (Version du client MySQL 5.0.18).
 
Je souhaite que cette requête me renvoit les informations d'une news ainsi que le nombre de commentaire lier à cette news et le pseudo du posteur de la news.
Jusque la tout va bien, la requête fonctionne mais elle présente un défaut de ne retourner les news que lorsque le nombre total de commentaire est égale à 0. Mais justement je souhaite afficher tout de même les news qui ont un commentaire à zéro :
 

Code :
  1. SELECT information.id_info, information.id_joueur, COUNT(id_com) AS nb_commentaire, pseudo, icone, titre, txt, date_creation
  2. FROM information, joueur, commentaire
  3. WHERE information.id_joueur = joueur.id_joueur
  4. AND information.id_info = commentaire.id_info
  5. GROUP BY information.id_info, information.id_joueur, pseudo, icone, titre, txt, date_creation
  6. ORDER BY id_info DESC
  7. LIMIT 5


 
Comment faire pour contourner le problème ? Et ainsi qu'il me retourne toute les news avec le nombre de commentaire ?
 
Merci d'avance pour votre aide :)


Message édité par cvex le 21-01-2007 à 23:57:57
Reply

Marsh Posté le 20-01-2007 à 04:01:02   

Reply

Marsh Posté le 21-01-2007 à 09:04:57    

Il faut que tu fasses une jointure externe (left/right join).
Dans ton cas, comme tu n'utilises pas join, tu dois mettre *= (ou =* suivant le cas)
 
Si j'ai bien compris ce doit être entre ces 2 champs information.id_info commentaire.id_info
 
Essaie (si pas bon essaie l'autre sens, =*):
 

Code :
  1. SELECT information.id_info, information.id_joueur, COUNT(id_com) AS nb_commentaire
  2. FROM information, joueur, commentaire
  3. WHERE information.id_joueur = joueur.id_joueur
  4. AND information.id_info *= commentaire.id_info
  5. GROUP BY information.id_info, information.id_joueur, pseudo, icone, titre, txt, date_creation


 

Reply

Marsh Posté le 21-01-2007 à 20:46:34    

Arg, j'ai testé avec les *= et =*
Et ca ne fonctionne pas, maintenant je me dis peut-être que OVH bloque certaines fonctionnalités de MySQL parce que c'est pas la première fois, que j'ai des fonctions de MySQL qui refuse de fonctionner.
 
Je vais voir ce que je peux faire les Left / Right Join
 
Merci :)

Reply

Marsh Posté le 21-01-2007 à 23:57:36    

Re,
 
Eh bien, c'est parfait :) Ca marche du feu de dieu le LEFT JOIN, RIGHT JOIN :)
 
Merci beaucoup pour ton aide

Reply

Marsh Posté le 22-01-2007 à 06:13:57    

cvex a écrit :

Re,
 
Eh bien, c'est parfait :) Ca marche du feu de dieu le LEFT JOIN, RIGHT JOIN :)
 
Merci beaucoup pour ton aide


 
pour info tu dois pouvoir faire la même chose en utilisant join qu'en faisant ta jointure dans le where, c'est l'exemple que je t'ai donné qui doit être faux ;)
 
perso je préfères join (question d'habitude)  :)

Reply

Sujets relatifs:

Leave a Replay

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