Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème requete sql, JOIN entre 3 tables

Sujet résolu
11 septembre 2010 à 0:44:54

Bonsoir a tous,

j'ai en fait des difficultées a ecrire une requete sql pour le blog que je fais en php.

j'ai une fonction qui pour l'instant recupere mes post (leur titre, texte, et date)
j'aimerai améliorer celle ci pour pouvoir recuperer le nombre de commentaire poster sur chaque post mais egalement recuperer le nom des images poster
mon probleme est que la requete que j'ai ecrite ne m'affiche que les posts ou il y a un nom d'image et j'aimerai pourtant tous les recuperer


SELECT COUNT(comment.idCom) as nbCom , posts.titre, posts.post, posts.date, fichier.name
FROM posts
INNER JOIN comment ON posts.id = comment.idArticle
INNER JOIN fichier ON posts.id = fichier.idArticleImg


Voici mes tables
Image utilisateur

Merci d'avance

  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2010 à 0:47:40

Change INNER JOIN pour LEFT OUTER JOIN.

Sinon, mauvais forum.
  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2010 à 1:21:57

Citation : sinouz


mon probleme est que la requete que j'ai ecrite ne m'affiche que les posts ou il y a un nom d'image et j'aimerai pourtant tous les recuperer


que veux-tu dire par la?
si je comprends un tant soit peu tu as donc des images qui n'ont pas de nom
et dans ta table 'fichier' je ne vois aucune indication pour cela
il te faut peut-etre une colonne supplémentaire de type booléan ou tu mets par ex
à 1 si l'image à un nom sinon à 0
mais je trouves cela un peu farfelu cette histoire de nom d'images sans te vexer.
aussi si tu utilises une fonction d'agregation comme count() il te faut un group by :)
  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2010 à 2:31:36

fayden : merci, j'ai changer inner join et maintenant ma requete fonctionne, tu sais m'expliquer la difference ? histoire d'apprendre un peu de mes erreurs ?

akram : en fait j'ai fais un script pour uploader des images avec un formulaire, et j'essai d'afficher les images j'ai rien trouver de mieux que d'envoyer le nom dans la bd et de le recuperer pour l'afficher, si vous avez une meilleure solution je suis prenneur :D

Gros merci pour votre aide
  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2010 à 2:36:48

Rapidement : INNER JOIN fait une jointure interne, c'est-à-dire qu'elle rassemble uniquement les lignes où la condition est remplie.

LEFT OUTER JOIN fait une jointure externe gauche, c'est à dire prend tous les éléments de la table de gauche (celle du FROM) et rassemble une ligne de la table de droite (celle après LEFT OUTER JOIN) si c'est possible, sinon rajoute des NULL.

Si tu veux en savoir plus, fais une petite recherche sur le net, tu devrais trouver ton bonheur.
  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2010 à 3:03:03

quand tu die que ta requete marche, tu veux dire que tu arrives à afficher tous les posts ou les images ont un nom ou pas?
  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2010 à 3:35:40

je sais afficher le titre le post la date et l'image :D
  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2010 à 3:42:43

donc mets le sujet en résolu !
  • Partager sur Facebook
  • Partager sur Twitter