Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die MySQL COUNT-Funktion funktioniert in mehreren verbundenen Abfragen nicht so, wie ich es gerne hätte

SELECT comments.comment_id, comments.descr, comments.created, usrs.usr_name, 
  (SELECT COUNT(*) FROM comment_likers WHERE comment_id=comments.comment_id AND liker=1)likes,
  (SELECT COUNT(*) FROM comment_likers WHERE comment_id=comments.comment_id AND liker=0)dislikes
  liker
FROM comments
INNER JOIN usrs ON ( comments.usr_id = usrs.usr_id )
LEFT JOIN comment_likers  ON ( comments.comment_id = comment_likers.comment_id 
 AND comment_likers.usr_id = $usrID )
WHERE comments.topic_id=$tpcID
ORDER BY comments.created DESC;

Ein paar Notizen. Ich war mir nicht sicher, was der zweite linke Join auf comment_likers bewirken sollte (derjenige, der $usrID verwendet). Sind Sie nur an Likes zu einem bestimmten Thema von einem bestimmten Benutzer interessiert?

Sie könnten auch darüber nachdenken, das Schema für Kommentare created zu ändern ein datetime anstelle eines varchar sein.