将两个表合并到一个实例化视图中

问题描述 投票:0回答:1

我正在尝试将两个表(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;

谢谢

postgresql join postgis union-all
1个回答
0
投票

您需要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;
© www.soinside.com 2019 - 2024. All rights reserved.