查询以合并2个表,不确定这是否是完整的外部联接

n9vozmp4  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(407)

我有两个表,我不知道如何正确连接。一个表列出了我的员工和他们工作的时间,另一个表列出了相同的员工和我们年初安排他们工作的时间。我想看看每个员工,以及他们分配或工作的每个项目的计划与实际。
表1计划工时表

Name, Project, Scheduled_Hours
------------------------------------------------
Alice    B      1
Bob      A      1
Bob      B      1

表2实际工时表

Name, Project, Actual_Hours
------------------------------------------------
Alice    A      1
Bob      B      1

结果我要计划与实际相结合的表-我想产生什么

Name,   Project, Scheduled_Hours, Actual_Hours
------------------------------------------------
Alice   A         Null             1
Alice   B         1                NULL
Bob     A         1                NULL
Bob     B         1                1

谢谢你的帮助

oiopk7p5

oiopk7p51#

这确实是一个错误 full join 关于名字和项目。
不同数据库的语法略有不同,但并非所有的支持 full join . 最方便的查询是:

select 
    coalesce(t1.name, t2.name) name,
    coalesce(t1.project, t2.project) project,
    t1.scheduled_hours,
    t2.actual_hours
from table1 t1
full join table2 t2 
    on t2.name = t1.name and t2.project = t1.project

一些数据库支持 using 子句,它稍微缩短了语法:

select 
    name,
    project,
    t1.scheduled_hours,
    t2.actual_hours
from table1 t1
full join table2 t2 
    using (name, project)

相关问题