【发布时间】:2019-06-05 16:45:24
【问题描述】:
所以我有两个具有相似数据的表。表 A 中有与表 B 中的列匹配的列,但使用不同的命名约定,也有来自每个列的列在另一个表中没有等效项,不应该合并任何行,我需要一个视图(我认为)两个表中的行,但合并了一些列,因此表 A.columnB 中的数据和表 B.columnF 中的数据都最终出现在视图 C.columnD 中。视图中的某些列仅在其中一个表中具有源,并且在另一个表中的行中为空。我无法更改任何现有的表结构,因为数据库在多个应用程序之间共享。我想我需要在视图中使用一堆 FULL OUTER JOIN 语句,但我无法思考如何真正去做。如果有人可以提供一个通用示例来说明这应该是什么样子,我应该能够从那里得到它。
这是一个不起作用的示例(实际数据库中 JOIN 的每一侧都有更多列,为了便于阅读而被截断):
SELECT
schedule_block.id as vid,
schedule_block.reason as vreason,
schedule_block.when_ts as vwhen,
schedule_block.duration as vduration,
schedule_block.note as vnote,
schedule_block.deleted_ts as vdeleted_when,
schedule_block.deleted_user_id as vdeleted_user_id,
schedule_block.lastmodified_ts as vlastmodified_ts,
schedule_block.lastmodified_user_id as vlastmodified_user_id
FROM schedule_block
FULL OUTER JOIN appointment.appt_when as vwhen ON 1 = 1
FULL OUTER JOIN appointment.patient_id as vpatient ON 1 = 1
FULL OUTER JOIN appointment.duration as vduration on 1 = 1
FULL OUTER JOIN appointment.deleted_when as vdeleted_when ON 1 = 1
如果我错了,请纠正我,但我认为我不能使用 UNION,因为每边的列数不同
【问题讨论】:
-
看起来像
UNION的工作 -
我不认为
UNION处理与其他表中的内容不匹配的列
标签: sql ruby-on-rails postgresql