sql - 在 UNION ALL View 创建中使用 JOIN

标签 sql ruby-on-rails postgresql

我正在创建一个 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/

相关文章:

sql - sqlite3中的case表达式

mysql - 允许同一父级的多个 "types"数据的通用模式是什么

java - JPA继承@EntityGraph包括子类的可选关联

php - Postgres pg_terminate_backend 替代方案

php - 插入 0000-00-00 00 :00:00 datetime from mysql to postgresql

sql - 在大型、频繁使用的表上运行更新

javascript - 如何从 Rails 4 应用程序中的 javascript 生成的按钮调用 Controller 函数?

ruby-on-rails - 安装多个版本的 Rails 会覆盖以前的安装吗?

ruby-on-rails - Rails 是否 rake db :migrate needs a javascript runtime?

sql - SQL 中的 Order by 子句执行