Я пытался реализовать несколько запросов MySql Join.
У меня есть три таблицы, а именно "топики", "посты" и "пользователи".Это схема, которую я имею для этих таблиц.
Я пытаюсь получить название темы, содержание темы, имя автора темы, дату создания темы и количество сообщений, которые она имеет для всех тем.На данный момент в таблице «тем» имеется 20 записей, а в каждой теме - 5 записей.Итак, таблица записей имеет 100 строк.
Я пробовал следующий запрос и ожидал получить 20 строк из набора результатов.
SELECT t.id
, t.name
, u.user_name
, DATE_FORMAT(t.created_at, '%M %e, %Y @ %h:%i %p') created_at
, COUNT(p.id) reply_count
FROM topics t
JOIN users u
ON t.user_id = u.id
JOIN posts p
ON p.topic_id = t.id
Но я не смогчтобы получить желаемый результат.Я получаю только одну строку в выводе с "reply_count", равным 100 (у меня есть 100 записей в таблице "posts")
Я чувствую, что что-то не так в "COUNT (p.id)) как reply_count "часть запроса.Я попытался удалить эту часть с помощью чего-то вроде ... например, "p.id as reply_count"
Вот как выглядит измененный запрос
SELECT t.id
, t.name
, u.user_name
, DATE_FORMAT(t.created_at, '%M %e, %Y @ %h:%i %p') created_at
, p.id reply_count
FROM topics t
JOIN users u
ON t.user_id = u.id
JOIN posts p
ON p.topic_id = t.id
Это дает мне 100 строк в результате, чтоэто правильно.
В принципе, я застрял в получении количества сообщений для каждой темы.Где я неправ?Не могли бы вы представить свои предложения?
Редактировать :
Попытка смоделировать, какие таблицы у меня есть и какие результаты я ожидаю ----
Это Sqlfiddle из того, что я пытался
Ожидаемый результат - 5 строк, каждая строка содержит идентификатор темы, имя темы, тело темы, имя пользователя создателя темы, время создания темы и "номер"сообщений по каждой теме "