我正在创建一个 View ,合并两个具有一些相似字段和一些不同字段的表。我有这 95% 的工作,但表 A 中有一个字段与表 B 中的字段匹配,但前提是您将 B 中的该字段用作连接以从表 C 中提取字段。下面代码的唯一部分不起作用的是 JOIN。我可以将这两个字段都放入并执行从模型中的 ehruser_id
获取 provider_id
的逻辑,但我觉得它应该在 SQL 中可行并且我只是还不具备让最后一点工作的知识
DROP VIEW IF EXISTS vunifiedschedule CASCADE;
CREATE VIEW vunifiedschedule AS
SELECT
schedule_block.id as vid,
schedule_block.reason as vblock_reason,
NULL as vappointment_reason_id,
schedule_block.when_ts as vwhen,
schedule_block.deleted_ts as vdeleted_when,
schedule_block.placeofservice_id as vlocation_id,
schedule_block.duration as vduration,
true as vappointment_book,
schedule_block.note as vnote
FROM schedule_block
LEFT JOIN ( SELECT id FROM provider) as vprovider_id ON provider.ehruser_id = schedule_block.ehruser_id
UNION ALL
SELECT
appointment.id AS vid,
NULL as vblock_reason,
appointment.appointmentreason_id AS vappointment_reason_id,
appointment.appt_when AS vwhen,
appointment.deleted_when AS vdeleted_when,
appointment.location_id AS vlocation_id,
appointment.visit_length AS vduration,
appointment.appointment_book as vappointment_book,
appointment.note AS vnote,
appointment.provider_id as vprovider_id
FROM appointment
我得到的错误是
错误:缺少表“提供者”的 FROM 子句条目
第 14 行:...ELECT id FROM provider) as vprovider_id ON provider.e...
最佳答案
错误很明显。您没有提供者
。我想你打算:
FROM schedule_block LEFT JOIN
( SELECT id FROM provider) vprovider_id
ON vprovider.ehruser_id = schedule_block.ehruser_id
--------^
但是子查询是不必要的:
FROM schedule_block LEFT JOIN
provider
ON provider.ehruser_id = schedule_block.ehruser_id
关于sql - 在 UNION ALL View 创建中使用 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56478345/