Объединение двух запросов в одном представлении - PullRequest
0 голосов
/ 14 октября 2019

У меня есть эта таблица:

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`;
...