У меня есть 3 таблицы post
, post_like
и post_comment
.
Я хотел бы посчитать likes
и comments
сообщений пользователя:
сообщение:
+-------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+-------------------+----------------+
| id | int(30) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | | 0 | |
| description | text | YES | | NULL | |
| link | varchar(100) | YES | | '' | |
+-------------+--------------+------+-----+-------------------+----------------+
post_like:
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| post_id | int(30) | NO | | 0 | |
| user_id | int(30) | NO | | 0 | |
| time | varchar(50) | NO | | 0 | |
+---------+-------------+------+-----+---------+----------------+
post_comment:
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(30) | NO | PRI | NULL | auto_increment |
| post_id | int(20) | NO | | 0 | |
| user_id | int(20) | NO | | 0 | |
| text | text | YES | | NULL | |
| time | varchar(100) | NO | | 0 | |
+---------+--------------+------+-----+---------+----------------+
Вот запрос, который я сформулировал:
SELECT
p.*,
COUNT(l.post_id) "likes",
COUNT(c.post_id) "comments"
FROM
post p
INNER JOIN post_like l ON p.id = l.post_id
INNER JOIN post_comment c ON c.post_id = l.post_id
WHERE
p.user_id=55
GROUP BY
l.post_id
ORDER BY
p.created_at DESC
Проблема в том, что запрос возвращает только одну строку, в то время как есть несколько сообщений.
Я пробовал разные трюки и смотрел на похожие вопросы, но не смог найти решение.
Как я могу это исправить?