На моем форуме я использую базу данных с posts
Таблица :
type
может быть вопросом, ответом или примечанием («Q», «A», «N»)updated
дата последнего обновления сообщенияpostid
целое число, идентифицирующее сообщениеparentid
целое число, ссылающееся на родительский пост (NULL
для вопросов, относится к вопросу для ответов, относится к вопросу или ответу для заметок)Как мне создать таблицу, связывающую postid
каждого вопроса с postid
самого последнего ответа / примечания, связанного с этим?
Я предполагаю, что это требует тройного соединения, но это очень ново для меня.
Вы можете сделать это:
SELECT
p.postid,
answersAndNotes.postid AS AnswerOrNoteId,
answersAndNotes.updatedDate AS AnswerOrNoteUpdateDate
FROM posts p
INNER JOIN
(
SELECT
parentid,
postid,
MAX(updated) AS updatedDate
FROM posts
WHERE `type` = 'A' OR `type` = 'N'
GROUP BY postid
) AS answersAndNotes ON answersAndNotes.parentid = p.postid
WHERE p.type = 'Q';
Подзапрос:
SELECT
parentid,
postid,
MIN(updated) AS updatedDate
FROM posts
WHERE `type` = 'A' OR `type` = 'N'
GROUP BY postid
Предоставит вам эти ответы или заметки и только самые последние, если есть заметка или другие столбцы, которые вы хотите выбрать, добавьте их в этот подзапрос и в GROUP BY
,
Других решений пока нет …