postgresql - 将两个表合并为一个物化视图
问题描述
我正在尝试将两个表 (POI) 组合到一个物化视图中,但它们没有相同的列。
例如:
表a:属性:名称、类型、geoloc、符号编号
表b:属性:名称、类型、info1、info2、geoloc
我在 SELECT 语句之间尝试了“JOIN”和“UNION ALL”,但它不起作用。有什么建议么?完美的解决方案是用 NULL 填充空列,例如表 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;
推荐阅读
- android - 按 onBackButton 回到我的片段,但我不想
- python - 使用for循环从2个列表python中查找名称
- mysql - 如何创建具有多个多对多关系的连接
- reactjs - 如何在反应中导入fontello
- python - 给定所需的行范围,如何从文本文件中切片数据
- android - Android:为什么使用 Google 登录按钮图标未正确对齐?
- php - Windows 上的 PDOException::("找不到驱动程序")
- kubernetes - 我们可以设置一个 k8s 裸机服务器来运行 Bind DNS 服务器(命名)并从外部通过端口 53 访问它吗?
- c - 如何使用scanf获取以空格分隔的字符
- prolog - 为什么'mary'是真的两次?