Я перечисляю комментарии для записи, и я разрешаю пользователю редактировать существующие комментарии, и он отслеживает эти изменения.
Структура таблицы:
комментарии: id, сводка
revisions: comment_id, revision_id, timestamp
revisions.comment_id = comments.id
revisions.revision_id = идентификатор нового комментария, дальнейшее объяснение: когда они выбирают существующий комментарий, онотобразит форму редактирования, и они могут ввести новый комментарий и отправить его.Он вставит его в таблицу комментариев в качестве нового комментария, возьмет последний идентификатор из этой таблицы и установит его как revision_id в таблице ревизий.
Я хочу сделать отдельный выбор в таблице ревизий (чтобы получитьмножественный comment_id, revision_id в массив, который будет использоваться в приложении):
например:
select distinct comment_id from revisions
Но можно ли выбрать соответствующую запись на основе самого последнего комментария (ревизии.timestamp)?
в теории:
выбрать отличительный комментарий_ид из ревизий. ГДЕ отметка времени - САМАЯ БОЛЬШАЯ
пример таблицы ревизий:
comment_id revision_id timestamp
2 12 20120222180000
2 13 20120222170000
5 18 20120222190000
5 19 20120222200000
В этомВ качестве примера из 4 строк я бы хотел, чтобы запрос возвратил две строки,
:
comment_id = 2, revision_id = 12 timestamp = 20120222180000
и
comment_id = 5, revision_id = 19 timestamp = 20120222200000
ОБНОВЛЕНИЕ: похоже, это помогает, но, пожалуйста, дайте мне знать, если есть лучший способ
SELECT
distinct comment_id, max(timestamp)
FROM
revisions
GROUP BY
comment_id
ОБНОВЛЕНИЕ: Я всеo необходимо включить revision_id, приведенный выше запрос включает только comment_id и отметку времени
Это было сделано:
SELECT
distinct a.comment_id as comment_id,
a.revision_id revision_id,
a.timestamp as timestamp
FROM
REVISIONS a
WHERE
a.timestamp = (
SELECT
max(b.timestamp)
FROM
revisions b
WHERE
b.comment_id = a.comment_id
)