У меня есть эта таблица:
TABLE S_TEXT:
PS_TEXT S_TEXT VS_TEXT D_TEXT
1 1 1 Hey
2 1 1 Hello
3 1 2 Oh
4 2 1 Hallo
5 2 1 Hallo
6 2 2 Hi
Затем у меня есть это представление для удаления всех дублетов истории:
CREATE OR REPLACE VIEW `VHS_TEXT`
AS SELECT
`S_TEXT`.`PS_TEXT`,
`S_TEXT`.`S_TEXT`,
`S_TEXT`.`VS_TEXT`,
`S_TEXT`.`D_TEXT`
FROM
`S_TEXT` LEFT JOIN
`S_TEXT` AS `t2`
ON (
`S_TEXT`.`S_TEXT` = `t2`.`S_TEXT` AND `S_TEXT`.`PS_TEXT` < `t2`.`PS_TEXT`
)
WHERE
`t2`.`PS_TEXT` IS NULL;
ПРОСМОТР VHS_TEXT:
PS_TEXT S_TEXT VS_TEXT D_TEXT
3 1 2 Oh
6 2 2 Hi
Затем у меня есть это представление, чтобы показать версии без дублетов:
CREATE OR REPLACE VIEW `VVS_TEXT`
AS SELECT
`S_TEXT`.`PS_TEXT`,
`S_TEXT`.`S_TEXT`,
`S_TEXT`.`VS_TEXT`,
`S_TEXT`.`D_TEXT`
FROM
`S_TEXT` LEFT JOIN
`S_TEXT` AS `t2`
ON (
`S_TEXT`.`S_TEXT` = `t2`.`S_TEXT`
AND `S_TEXT`.`VS_TEXT` = `t2`.`VS_TEXT`
AND `S_TEXT`.`PS_TEXT` < `t2`.`PS_TEXT`
)
WHERE
`t2`.`PS_TEXT` IS NULL;
VIEW VVS_TEXT:
PS_TEXT S_TEXT VS_TEXT D_TEXT
2 1 1 Hello
3 1 2 Oh
5 2 1 Hallo
6 2 2 Hi
Теперь я вставляю один новый экземпляр строки 2 версии 1:
PS_TEXT S_TEXT VS_TEXT D_TEXT
1 1 1 Hey
2 1 1 Hello
3 1 2 Oh
4 2 1 Hallo
5 2 1 Hallo
6 2 2 Hi
7 2 1 Hi too
Теперь я получаю это в VHS_TEXT:
PS_TEXT S_TEXT VS_TEXT D_TEXT
3 1 2 Oh
7 2 1 Hi too
Но я хочу это:
PS_TEXT S_TEXT VS_TEXT D_TEXT
3 1 2 Oh
6 2 2 Hi
Нужный запрос / представление можно определить следующим образом:
- по одной строке для каждого отдельного S_TEXT
- показать последнюю версию VS_TEXT для S_TEXT с последней редакцией PS_TEXT