Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL COUNT функцията не работи както бих искал в множество обединени заявки

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;

Няколко бележки. Не бях много сигурен какво трябваше да постигне второто ляво присъединяване към comment_likers (това, което използва $usrID). Интересувате ли се само от харесвания по конкретна тема от конкретен потребител?

Освен това може да помислите за промяна на схемата за created коментари да бъде дата и час вместо varchar.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи функцията CHARACTER_LENGTH() в MySQL

  2. Първичният трябва да включва всички колони в грешката при разделяне на таблицата?

  3. Показване на всеки ред от MySQL в отделен DIV

  4. Променете таблицата, за да дадете ограничение за външен ключ

  5. Вземете резултати от заявка за броене, като игнорирате израза LIMIT