Очевидно, что в вашем запросе отсутствует предложение GROUP BY
, которое должно перечислять все столбцы из таблицы articles
- или, если вы запускаете MySQL с отключенным режимом sql ONLY_FULL_GROUP_BY
, оно должно содержать первичный ключ articles
.
Может быть проще express это с коррелированным подзапросом:
select
a.*,
coalesce(
(select count(*) from article_comments ac where ac.article_id = a.id),
0
) comments_count
from articles a
Вы также можете предварительно агрегировать в подзапросе:
select
a.*,
coalesce(c.comments_count, 0) comments_count
from articles a
left join (
select article_id, count(*) comments_count
from article_comments
group by article_id
) c on c.article_id = a.id