13

我在员工和工作组之间有以下多对多关系:

员工表
-----------------
ID

员工组表
---------------
员工ID
工作组 ID

工单表
----------------
工作组 ID

我正在尝试编写 SQL 来根据员工所属的工作组列出员工的所有工作订单。

这是我的尝试:

SELECT wonum, workgroup_id
FROM workorders
INNER JOIN employees
ON workorders.employee_id = employee_id
INNER JOIN empgroups 
ON employees.employee.id = empgroups.employee_id
WHERE employee_id = 2

我得到的错误是:

ERROR:  schema "employees" does not exist

抱歉 - 员工的 id 不是employee.id

4

3 回答 3

27

这不是你要找的吗?

SELECT wonum, workgroup_id
  FROM workorders
  JOIN empgroups 
    ON empgroups.workgroup_id = workorders.workgroup_id
  JOIN employees
    ON employees.employee_id = empgroups.employee_id
 WHERE employees.employee_id = 2
于 2013-05-16T20:30:07.480 回答
6
SELECT w.wonum, w.workgroup_id
FROM   workorders w
JOIN   empgroups  e USING (workgroup_id)
WHERE  e.employee_id = 2

employees此查询根本不需要该表。USING在这种情况下缩短语法。和表别名一样。

于 2013-05-16T21:18:59.203 回答
2

尝试改用此查询:

SELECT * FROM empgroups
INNER JOIN employees
ON empgroups.empId = employees.id
INNER JOIN workorders
ON empgroups.woId = workorders.id

SqlFiddle

于 2013-05-16T20:25:34.323 回答