将两个表合并为一个物化视图

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;