【发布时间】:2013-11-30 20:57:15
【问题描述】:
我有EmployeeName;它来自Employee 表。 Employee 表包含组织中的所有员工,Employee 表引用 Position 表的主键,该表包含不同的职位名称。这就是我在Employee 表中区分员工的方式; Employee 表中的每条记录都有一个 PosNo 引用 Position 表(worker = Pos1,manager = Pos2 等...)所以为简单起见,employee 表中的记录类似于:@987654330 @
问题是:某些职位在其他职位之下。 Employee 表中有工人,Employee 表中有经理。我想做一张列出所有工人及其经理的表格。例如,该表将有两个字段:EmployeeName, ManagerName。
Employee 表被分解为一个泛化层次结构。 Salary 和 Hourly 表从 Employee 表分支出来。然后,从Salary 表中,另一个名为Manager 的表分支出来(我称之为ProgramSupervisor;它有一个唯一的字段)。工人是Hourly 表的一部分。 Managers(ProgramSupervisor) 和 Workers(Hourly) 通过ISL 表相互关联。经理是 ISL 的负责人,因此 ISL 将 ManagerNo 作为其字段之一。但是,Workers(Hourly) 在ISL 中工作,因此在他们的表Hourly 中将ISLNo 作为一个字段。
所以,我试图找到一种方法将所有这些表关联起来,创建一个包含两个字段(工人和经理)的表,其中工人通过ISL 表属于经理。我会使用某种嵌套查询吗?到目前为止,我将发布我的代码,这绝对不正确(甚至可能在正确的轨道上也没有),我将发布我的 ERD,以便您更好地了解表格之间的关系。
SELECT EmpLastName + ', ' + EmpFirstName as ProgSupName,
EmpLastName + ', ' + EmpFirstName as EmpName
FROM Employee, Salary, ProgramSupervisor, ISL, Hourly
WHERE Employee.EmpNo = Salary.EmpNo
AND Salary.EmpNo = ProgramSupervisor.EmpNo
AND ProgramSupervisor.EmpNo = ISL.ProgramSupervisor_EmpNo
AND ISL.ISLNo = Hourly.ISLNo
AND Hourly.EmpNo = Employee.EmpNo
【问题讨论】:
标签: sql database ms-access-2010 erd