У меня есть две таблицы с отношением 1: n: «content» и «versioned-content-data» (например, сущность статьи и все версии, созданные в этой статье). Я хотел бы создать представление, отображающее верхнюю версию каждого «контента».
В настоящее время я использую этот запрос (с простым подзапросом):
SELECT
t1.id,
t1.title,
t1.contenttext,
t1.fk_idothertable
t1.version
FROM mytable as t1
WHERE (version = (SELECT MAX(version) AS topversion
FROM mytable
WHERE (fk_idothertable = t1.fk_idothertable)))
Подзапрос на самом деле является запросом к той же таблице, которая извлекает наивысшую версию определенного элемента. Обратите внимание, что версионные элементы будут иметь одинаковый fk_idothertable.
В SQL Server я пытался создать индексированное представление этого запроса, но, похоже, я не смог, так как подзапросы не разрешены в индексированных представлениях . Итак ... вот мой вопрос ... Можете ли вы придумать способ преобразовать этот запрос в какой-то запрос с помощью JOIN?
Кажется, что индексированные представления не могут содержать:
- подзапросы
- общие табличные выражения
- производные таблицы
- HAVING пункты
Я в отчаянии. Любые другие идеи приветствуются: -)
Большое спасибо!