MySQL таблица самостоятельного соединения

На моем форуме я использую базу данных с posts Таблица :

введите описание изображения здесь

  • type может быть вопросом, ответом или примечанием («Q», «A», «N»)
  • updated дата последнего обновления сообщения
  • postid целое число, идентифицирующее сообщение
  • parentid целое число, ссылающееся на родительский пост (NULL для вопросов, относится к вопросу для ответов, относится к вопросу или ответу для заметок)

Как мне создать таблицу, связывающую postid каждого вопроса с postid самого последнего ответа / примечания, связанного с этим?

Я предполагаю, что это требует тройного соединения, но это очень ново для меня.

0

Решение

Вы можете сделать это:

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,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]