Как получить самые комментируемые статьи с использованием SQL? - PullRequest
0 голосов
/ 28 августа 2018

У нас есть 2 таблицы: articles, comments. Структура этой таблицы:

articles(article_id(PK), etc);

comments(comment_id(PK), article_id(FK)).

Мне нужно получить список самых комментируемых статей. Я использовал запрос:

SELECT articles.article_id, COUNT(comments.article_id) 
FROM comments
INNER JOIN articles ON comments.article_id = articles.article_id AND comments.article_id = :article_id.

Каким должен быть запрос на получение массива данных с 3 наиболее комментируемыми статьями? Реально ли это сделать с помощью SQL?

Ответы [ 4 ]

0 голосов
/ 28 августа 2018

есть более простой способ, вы можете добавить столбец 'n-comments' в таблицу статей и инициализировать его нулем, а с помощью функции отправки комментария обновите значение 'n -comments ++ 'после каждого комментария.

thin каждая статья будет содержать количество своих комментариев, и будет очень легко выбрать наиболее комментируемые статьи по: "ВЫБЕРИТЕ article_id ИЗ СТАТИСТИЧЕСКИХ ЗАКАЗОВ ПО n-КОММЕНТАРИИ DESC LIMIT 50"

Я думаю, что это будет проще и быстрее, надеюсь, это поможет

0 голосов
/ 28 августа 2018

Если вам просто нужен идентификатор статьи, тогда join не требуется:

SELECT c.article_id, COUNT(*) AS num_comments
FROM comments c
GROUP BY c.article_id
ORDER BY num_comments DESC
LIMIT 3
0 голосов
/ 28 августа 2018

Приведенный ниже запрос предоставит вам список статей и количество комментариев для каждой из этих статей, упорядочив их по убыванию number_of_comments

SELECT articles.article_id, COUNT(comments.article_id) AS comment_count
FROM articles, comments
WHERE articles.article_id=comments.article_id
GROUP BY articles.article_id
ORDER BY comment_count DESC
0 голосов
/ 28 августа 2018

Вы должны быть в состоянии получить то, что вы хотите с этим запросом:

SELECT articles.article_id, COUNT(comments.article_id) AS num_comments
FROM comments
INNER JOIN articles ON comments.article_id = articles.article_id
GROUP BY articles.article_id
ORDER BY num_comments DESC
LIMIT 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...