@vasiliyshaidiuk

Как правильней составить сложный запрос выборки из 3-ёх таблиц?

Здравствуйте. Пожалуйста, помогите составить полный запрос из моих наработок..

Создается типичный блог: в базе имеется таблицы users, walls, comments. Нужно одним запросом вывести определенное кол-во постов из walls, добавив к нему имя автора (walls.author_uid = users.ID), и дополнительно кол-во комментариев из comments (comments.wall_id = walls.ID).
Если автора в users не будет -- всё равно показывать его посты.
Если комментариев к посту нет -- показывать пустую ячейку, или цифру ноль.

Запрос, который я составил:
SELECT 	w.ID, w.unixtime, w.title, w.text, w.hashtagsID,
		u.name_surname
FROM walls w
LEFT JOIN users u ON w.author_uid = u.ID
ORDER BY w.ID DESC LIMIT 10


Он должен выводить строки с данными каждого поста (10 последних) + имя автора каждого из них.
Не получается только добавить к каждой этой строке кол-во комментариев из таблицы comments. Делаю что-то такое:
SELECT 	w.ID, w.unixtime, w.title, w.text, w.hashtagsID,
		u.name_surname,
        COUNT(c.wall_id)
FROM walls w
LEFT JOIN users u ON w.author_uid = u.ID
LEFT JOIN comments c ON w.ID = c.wall_id
ORDER BY w.ID DESC LIMIT 10

но получается бред.. да и не показываются те посты, комментариев которых нет (а должно вывести число ноль)
Спасибо большое кто поможет)
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Не получается только добавить к каждой этой строке кол-во комментариев из таблицы comments
Вместо соединения таблиц подзапрос подсчёта количества.
(SELECT COUNT(*) FROM comments WHERE comments.wall_id =  w.ID) AS CountComment
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы