Количество в базе данных mysql - PullRequest
0 голосов
/ 09 февраля 2020

Это мой запрос:

Select articles.id,articles.userid,articles.article,count(articles_likes.id), count(article_dislikes.id) 
from articles
Left join article_likes 
on article_likes.id=articles.id 
Left join article_dislikes 
on article_dislikes.id=articles.id 
group by articles.id ;

Я хочу подсчитать количество строк в таблицах article_likes и table article_dislikes, получая правильное значение до 2 строк ... при наличии третьей и так далее записей. . Я ошибаюсь при подсчете строк ... Я не знаю, в чем проблема ... Я думаю, что я могу получить неправильные значения, потому что я использую одну и ту же таблицу два раза ... пожалуйста, помогите мне

У меня есть три таблицы

1) статьи содержат id, ID пользователя и статьи
2) Таблица Articles_likes содержит-like_id, user_id и article_id
3) Таблица Articles_dislikes содержит dislike_id, user_id и article_id

1 Ответ

0 голосов
/ 09 февраля 2020

Агрегируйте отдельно в каждой из таблиц articles_likes и articles_dislikes и затем присоединяйте articles к результатам:

select a.id, a.userid, a.article,
  coalesce(l.likes, 0) likes,  
  coalesce(d.dislikes, 0) dislikes
from articles a
left join (
  select article_id, count(*) likes, 
  from articles_likes
  group by article_id
) l on l.article_id = a.id
left join (
  select article_id, count(*) dislikes, 
  from articles_dislikes
  group by article_id
) d on d.article_id = a.id

Также правильное объединение articles_likes и articles_dislikes к articles по столбцу article_id до id из articles.

...