Подсчет количества различных строк в MySQL
Я создаю систему комментариев с PHP / MySQL. Эта система комментариев имеет хорошую функцию, которая позволяет пользователям выделять текст (сохраненный как "selected_text" в базе данных), и этот выделенный текст будет сохранен в базе данных вместе с комментарием, сделанным пользователем. Кроме того, я также сохраняю абзац (из которого появился выделенный текст), как INT. Все эти значения правильно хранятся в базе данных, но теперь я хочу что-то с ними сделать.
Я хочу этого. создайте " счетчики комментариев." эти счетчики комментариев будут помещены рядом с каждым абзацем статьи, и они будут отображать общее число комментариев, сделанных по тому абзацу, к которому они прилагаются. Визуальный обзор "комментариев": структура таблицы:
Мой последний запрос, чтобы попытаться получить эту информацию:
$distinct = mysql_query("SELECT COUNT(DISTINCT paragraph_id) FROM comments");
И соответствующий PHP код:
while ($result_three = mysql_fetch_array($distinct))
{
echo $result_three['paragraph_id'];
}
Теперь, я думаю, что я, возможно, иду об этом неправильно путь. Я рассматривал возможность запуска запроса, который сначала находит все DISTINCT paragraph_ids
. После этого я бы запустил для каждого цикла, который подсчитывает количество раз, когда эти paragraph_ids
появляются.
4 ответа:
В основном, вам нужно подсчитать комментарии в каждой группе идентификаторов абзацев. Правильный запрос приведен ниже:
$distinct = mysql_query("SELECT paragraph_id, (DISTINCT comment_id) as comment_count FROM comments GROUP BY paragraph_id"); while ($result_three = mysql_fetch_array($distinct)) { echo $result_three['paragraph_id']; // Gives the id of the paragraph echo $result_three['comment_count']; // Gives the comment count for the associated paragraph }
Если я правильно понимаю вашу проблему, вам нужно
GROUP BY paragraph_id
. Попробуйте это:SELECT paragraph_id, COUNT(*) FROM comments GROUP BY paragraph_id
Вполне вероятно, что вы также Хотите знать, когда естьноль комментариев, которые вам нужно будет сделать внешнее соединение с абзацами.
SELECT p.paragraph_id, COUNT(c.comment_id) as comment_count FROM comments c RIGHT JOIN paragraphs p ON c.paragraph_id = p.paragraph_id GROUP BY p.paragraph_id
Вот рабочий data.se пример