В рамках проекта, над которым я работаю, я работал над сайтом, на котором пользователи могут добавлять и редактировать контент на разных страницах.
В настоящее время, когда кто-то добавляет раздел контента на страницу, он добавляется в таблицу "content" с столбцом с измененной датой и уникальным столбцом идентификатора. Однако, когда кто-то идет и редактирует эту запись, я беру информацию для этого ContentID в таблице "content" и создаю новую запись в таблице "changehist" с этой информацией (для отслеживания истории изменений для записей контента). после этого я затем обновляю таблицу содержимого новым контентом и датой его редактирования.
Таблица My Content содержит следующие столбцы: ContentID, Heading, Content, DateModified, UserID
Таблица ChangeHist содержит следующее: HistID, ContentID, Heading, Content, DateModified, UserID
То, что мне было предложено сделать, - это раздел, который показывает недавно добавленный контент (за последние 3 недели), но не последний обновленный контент (контент, добавленный год назад, но обновленный на прошлой неделе). В настоящее время я использую следующий запрос:
SELECT content.*
FROM content
WHERE
(NOT EXISTS
(SELECT 1
FROM changehist
WHERE changehist.ContentID = content.ContentID))
AND content.DateModified > NOW() - INTERVAL 3 WEEK
ORDER BY content.DateModified DESC
Моя проблема здесь в том, что если контент добавлен 3 часа назад и был отредактирован 2 часа назад, с моим текущим запросом, запись не отображается в результатах MYSQL.
Есть ли способ получить эту информацию в одном запросе или мне нужно использовать два отдельных запроса, по одному на каждую таблицу, и объединить два результата вместе в php?
Вы должны добавить условие, чтобы получить все вновь вставленные.
SELECT
A.*
FROM
(SELECT ContentID, Heading, Content, DateModified, UserID
FROM Content
WHERE DateModified > NOW() - INTERVAL 3 WEEK
UNION ALL
SELECT ContentID, Heading, Content, DateModified, UserID
FROM ContentHist
WHERE DateModified > NOW() - INTERVAL 3 WEEK) A
ORDER BY A.UserID, A.ContentID, A.DateModified DESC;
DateModified
с датой его создания / обновления в последний раз и списком изменений. Как узнать, когда контент был создан после его обновления?