Поддерживаю, обязательно денормализуйте. Триггеры в приложении — абсолютно нормально, в базе — скорее экзотика.
А вот вариант без подзапросов (подразумевается тип datetime для полей времени):
select
substr(max(concat(
DocumentRevision.time, ":",
RevisionStatus.time, ":",
RevisionStatus.status, ":",
Document.id
)), 43) docid
from
Document, DocumentRevision, RevisionStatus
where
DocumentRevision.documentId = Document.id and
RevisionStatus.revisionId = DocumentRevision.id
group by
Document.id
having
substr(max(concat(
DocumentRevision.time, ":",
RevisionStatus.time, ":",
RevisionStatus.status, ":",
Document.id
)), 41, 1) = "1"