Вам не хватает u.username
в group by
, также COUNT(a.id)
должно измениться на COUNT(distinct a.id)
:
SELECT u.id, u.username, COUNT(distinct a.id) AS total_articles, COUNT(c.id) AS total_comments FROM users u
LEFT JOIN articles a ON u.id = a.user_id
LEFT JOIN comments c ON a.id = c.article_id
GROUP BY u.id, u.username;
Обновление:
Однако, я думаю, что, чтовам на самом деле нужно что-то, кроме предложенного вами запроса.Вы сказали, что вам нужно общее количество статей для каждого пользователя и общее количество комментариев для каждой статьи .Это означает, что вам нужно два отдельных запроса:
SELECT a.id article_id , COUNT(c.id) AS total_comments
FROM articles a
LEFT JOIN comments c ON a.id = c.article_id
GROUP BY a.id
SELECT u.id, u.username, COUNT(distinct a.id) AS total_articles
FROM users u
LEFT JOIN articles a ON u.id = a.user_id
GROUP BY u.id, u.username;