2013-05-16 54 views
7

我有以下多對許多員工和工作組之間的關係:SQL一個多對多的關係,利用內部的連接

 
employees table 
----------------- 
id 

empgroups table 
--------------- 
employee_id 
workgroup_id 

workorders table 
---------------- 
workgroup_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

+0

問題是什麼?你從SELECT中得到的結果有什麼問題? –

+0

您是否需要在where子句中消除employee_id的歧義? – kenchilada

回答

18

這不是你要找的嗎?

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 
+0

感謝您的幫助 – DBurton

0

嘗試使用此查詢代替:

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

SqlFiddle

+0

empgroups沒有workorder_id - 它有workgroup_id – DBurton

3
SELECT w.wonum, w.workgroup_id 
FROM workorders w 
JOIN empgroups e USING (workgroup_id) 
WHERE e.employee_id = 2 

employees並不需要在所有此查詢。在這種情況下,USING縮短了語法。表格別名也一樣。

+0

這很瞭解! – DBurton