Я делаю некоторую работу для отдела, который имеет довольно простую структуру таблиц, настроенную для их форумов в базе данных MySQL:
Каждый пост принадлежит потоку, а каждый поток принадлежит категории.Существует также таблица пользователей с информацией об авторе.
TABLE category:
id (int)
name (varchar)
TABLE thread:
id (int)
category_id (int)
user_id ((int)
title (varchar)
last_post (int) -- logs a unix timestamp of the last posts insertion
TABLE post:
id (int)
user_id (int)
thread_id (int)
post (longtext)
timestamp (int)
TABLE users:
id (int)
username (varchar)
Я пытаюсь создать страницу, на которой будут отображаться все темы, в которых пользователь разместил сообщение (только один раз, поэтому, если пользователь опубликовал intветку 3 раза она все равно должна отображаться в списке только один раз), а самая последняя запись добавлена в каждую из этих тем.
Итак, вот поля, которые я пытаюсь выбрать:
Имя категории
Идентификатор категории
Название темы
Идентификатор темы
Идентификатор последнего добавленного сообщенияв эту ветку
Текст самого последнего добавленного сообщения в эту ветку
Идентификатор автора самого последнего добавленного сообщения в эту ветку
Имя автора последнего добавленного в эту ветку сообщения
Время, когда было добавлено последнее добавленное сообщение
Оно может быть упорядочено по самой последней активности потока.
Возможно ли это в одном запросе?Очевидно, что способ упростить это - запросить все темы, в которых пользователь разместил сообщение, а затем отправить отдельный запрос для каждой из них, чтобы получить самую последнюю добавленную информацию о сообщении.
Спасибо!