将两个表合并为一个物化视图
Combine two tables into one materialized view
我正在尝试将两个表 (POI) 合并到一个实体化视图中,但它们没有相同的列。
例如:
Table一个:
属性:名称、类型、geoloc、symbolnumber
Table乙:
属性:名称、类型、info1、info2、geoloc
我在 SELECT 语句之间尝试了 "JOIN" 和 "UNION ALL",但它不起作用。有什么建议么?完美的解决方案是用 NULL 填充空列,例如 Table a 没有 "info1".
原代码如下:
DROP MATERIALIZED VIEW vt_views.poitest;
CREATE MATERIALIZED VIEW vt_views.poitest
TABLESPACE pg_default
AS
SELECT tim_bergname.name,
tim_bergname.info1 AS hoehe,
tim_bergname.info2 AS region,
tim_bergname.geoloc,
tim_bergname.symbolnummer
FROM tim_bergname
JOIN
SELECT tim_flurname.name,
tim_flurname.geoloc,
tim_flurname.symbolnummer
FROM tim_flurname
WITH DATA;
ALTER TABLE vt_views.poitest
OWNER TO postgres;
GRANT ALL ON TABLE vt_views.poi TO postgres;
GRANT ALL ON TABLE vt_views.poi TO PUBLIC;
谢谢
您需要 UNION ALL
,并且两个子选择必须具有相同的列数和类型:
CREATE MATERIALIZED VIEW vt_views.poitest AS
SELECT tim_bergname.name,
tim_bergname.info1 AS hoehe,
tim_bergname.info2 AS region,
tim_bergname.geoloc,
tim_bergname.symbolnummer
FROM tim_bergname
UNION ALL
SELECT tim_flurname.name,
NULL,
NULL,
tim_flurname.geoloc,
tim_flurname.symbolnummer
FROM tim_flurname;
我正在尝试将两个表 (POI) 合并到一个实体化视图中,但它们没有相同的列。
例如:
Table一个: 属性:名称、类型、geoloc、symbolnumber
Table乙: 属性:名称、类型、info1、info2、geoloc
我在 SELECT 语句之间尝试了 "JOIN" 和 "UNION ALL",但它不起作用。有什么建议么?完美的解决方案是用 NULL 填充空列,例如 Table a 没有 "info1".
原代码如下:
DROP MATERIALIZED VIEW vt_views.poitest;
CREATE MATERIALIZED VIEW vt_views.poitest
TABLESPACE pg_default
AS
SELECT tim_bergname.name,
tim_bergname.info1 AS hoehe,
tim_bergname.info2 AS region,
tim_bergname.geoloc,
tim_bergname.symbolnummer
FROM tim_bergname
JOIN
SELECT tim_flurname.name,
tim_flurname.geoloc,
tim_flurname.symbolnummer
FROM tim_flurname
WITH DATA;
ALTER TABLE vt_views.poitest
OWNER TO postgres;
GRANT ALL ON TABLE vt_views.poi TO postgres;
GRANT ALL ON TABLE vt_views.poi TO PUBLIC;
谢谢
您需要 UNION ALL
,并且两个子选择必须具有相同的列数和类型:
CREATE MATERIALIZED VIEW vt_views.poitest AS
SELECT tim_bergname.name,
tim_bergname.info1 AS hoehe,
tim_bergname.info2 AS region,
tim_bergname.geoloc,
tim_bergname.symbolnummer
FROM tim_bergname
UNION ALL
SELECT tim_flurname.name,
NULL,
NULL,
tim_flurname.geoloc,
tim_flurname.symbolnummer
FROM tim_flurname;