在sql中的Isa关系查询

时间:2014-05-05 09:40:43

标签: sql

我的表格之间存在不相交的关系:Employee(empId PK, name), HourlyEmployee(empId PK FK, hourlySalary) empId是对Employee.empId的引用,

MonthlyEmployee(empId Pk FK, monthlySalary) empId是对Employee.empId的引用。

如何创建导致AllEmployees(empId,name,hourlySalary,monthlySalary).

的查询

对于所有小时工的员工,monthSalary将为null,并且对于所有月度员工,每小时工资将为空

此致 王兴仁

2 个答案:

答案 0 :(得分:1)

使用外部联接来获取所有员工,无论他们是否存在于HourlyEmployee或MonthlyEmployee(或两者都不存在)。

select e.empid, e.name, h.hourlysalary, m.monthlysalary
from employee e
left outer join hourlyemployee h on h.empid = e.empid
left outer join monthlyemployee m on m.empid = e.empid;

答案 1 :(得分:0)

select e.empid, e.name, h.hourlysalary, m.monthlysalary
from employee e
left outer join hourlyemployee h on h.empid = e.empid
left outer join monthlyemployee m on m.empid = e.empid
where (h.hourlysalary is null) or (m.monthlysalary is null);