我正在尝试将两个表(POI)合并到一个实例化视图中,但是它们没有相同的列。
例如:
表a:属性:名称,类型,地理位置,符号编号
表b:属性:名称,类型,信息1,信息2,地理位置
我在SELECT语句之间尝试了“ JOIN”和“ UNION ALL”,但是它不起作用。有什么建议么?完美的解决方案是,例如,如果表a没有“ info1”,则用NULL填充空的列。
这是原始代码:
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;