Jointures 3 tables

Barhamada Messages postés 7 Statut Membre -  
Barhamada Messages postés 7 Statut Membre -
Salut a tous
je vous explique mon probleme:
j'ai 3 tables:
users(id,username,password) | post(id,id_user,message) | likes(id,id_post,id_user)

Je voudrais ainsi afficher les posts avec le username correspondant et le nombres de likes de chaque post en une requete. Voici ma requete mais ca ne marche pas:
mysql_query("SELECT post.id,msg,date,user_id,username,COUNT(likes.id) AS lk FROM post 
INNER JOIN users ON user_id=users.id
INNER JOIN likes ON post.id=likes.id_post
WHERE post.status=1 ORDER BY post.id DESC") or die(mysql_error());


Quelqu'un a une idée ? Est ce la meilleur structure pour gérer les posts ?
Merci

1 réponse

  1. DelNC Messages postés 2360 Statut Membre 2 010
     
    Bonjour,

    Essayez la requête ci-dessous:

     
    SELECT post.id, users.username, count(likes.id_post)
    FROM post, users, likes
    WHERE likes.id_user = users.id
    AND likes.id_post = post.id
    Group BY post.idpost;


    Dans votre requête vous n'aviez pas indiquer comment les tables sont reliées entre elles.
    4
    1. Barhamada Messages postés 7 Statut Membre 1
       
      Salut DeLNC et merci pour ta réponse ca marche nickel. Cependant j'ai voulu ajouter 2 autres jointures en suivant ta logique mais je sais pas pourquoi ca mache pas. je voudrais ainsi recupérer le nombre de dislike et de commentaire et j'ai rajouté:
      SELECT post.id,msg,date,users.username, count(likes.id_post),count(dislike.id_post),count(comments.id_post)
      FROM post, users, likes, dislike,comments
      WHERE post.user_id = users.id
      AND likes.id_post = post.id
      AND dislike.id_post = post.id
      AND comments.id_post = post.id
      Group BY post.id


      Encore Merci
      0