У меня есть эта таблица:
TABLE S_TEXT:
PS_TEXT S_TEXT S_REGION D_TABLE D_COLUMN D_TEXT
1 1 1 Table1 Column1
2 1 1 Table1 Column1 Hello
3 2 2 Table1 Column1
4 2 2 Table1 Column1 Hallo
5 3 3 Table1 Column1
6 3 3 Table1 Column1 Hi
Затем у меня есть это представление для удаления всех дублетов истории:
CREATE OR REPLACE VIEW `VHS_TEXT`
AS SELECT
`S_TEXT`.`PS_TEXT`,
`S_TEXT`.`S_TEXT`,
`S_TEXT`.`S_REGION`,
`S_TEXT`.`D_TABLE`,
`S_TEXT`.`D_COLUMN`,
`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 S_REGION D_TABLE D_COLUMN D_TEXT
2 1 1 Table1 Column1 Hello
4 2 2 Table1 Column1 Hallo
6 3 3 Table1 Column1 Hi
Тогда у меня есть этот запрос, чтобы показать, были ли внесены более свежие изменения в РЕГИОН 2:
SELECT `VHS_TEXT`.*, (CASE WHEN k.`PS_TEXT` > `VHS_TEXT`.`PS_TEXT` THEN 2 ELSE 0 END) AS `CHANGED`
FROM `VHS_TEXT` LEFT JOIN
`VHS_TEXT` AS k
ON
(
`VHS_TEXT`.`D_TABLE` = k.`D_TABLE`
AND `VHS_TEXT`.`D_COLUMN` = k.`D_COLUMN`
AND k.`S_REGION` = 2
)
Результат:
PS_TEXT S_TEXT S_REGION D_TABLE D_COLUMN D_TEXT CHANGED
2 1 1 Table1 Column1 Hello 2
4 2 2 Table1 Column1 Hallo 0
6 3 3 Table1 Column1 Hi 0
Я хотел бывстроить запрос в само представление VHS_TEXT, чтобы получить samme-результат запроса следующим образом:
SELECT * FROM `VHS_TEXT`;