【发布时间】:2017-07-11 14:31:01
【问题描述】:
我有多个数据源(目前有 4 个,理论上将来可能会增加)输入到多个 PostgreSQL 表中,并希望创建一个视图来比较每个条目的不同来源。不幸的是,并非所有条目都出现在每个表中
目前我使用的查询格式如下
select [relevant_fields] from ((tableA full outer join tableB on
tableA.id=tableB.id) full outer join tableC on tableA.id=tableC.id)
full outer join tableD on tableD.id=tableA.id
这个查询的问题是,如果一个条目在表 B、C 和 D 中但不在表 A 中,那么它会变成 3 行(大部分为空),每个数据源一个。我意识到有一种方法可以通过插入到辅助表中来做到这一点,但想知道是否有任何方法可以直接在选择/视图中执行此操作,因为其中一些表非常大并且只会变得更大,我宁愿不会遇到内存问题,因为我存储了每条记录的多个副本。
所以我的问题是:有没有办法构建连接以在选择/视图中为每个条目完成 1 行(尽可能填写)?
编辑,示例数据:
Table A
id | value
1 | a
2 | b
3 | c
Table B
id | value
1 | A
3 | Z
Table C
id | value
1 | Q
4 | D
Table D
id | value
1 | a
3 | C
Result
id | val_A | val_B | val_C | val_D
1 | a | A | Q | a
2 | b | null | null | null
3 | c | Z | null | C
4 | null | null | D | null
【问题讨论】:
-
请Edit您的问题并添加一些示例数据和基于该数据的预期输出。 Formatted text 请no screen shots。 edit 您的问题 - 请不要在 cmets 中提供邮政编码或其他信息。
标签: postgresql