2013-05-16 33 views
7

Tôi có sau nhiều-nhiều mối quan hệ giữa người lao động và các nhóm làm việc:SQL cho một nhiều mối quan hệ sử dụng bên trong tham gia

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

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

workorders table 
---------------- 
workgroup_id 

Tôi đang cố gắng để viết SQL mà sẽ liệt kê tất cả các workorders cho một nhân viên dựa trên các nhóm làm việc mà nhân viên đó thuộc về.

Đây là nỗ lực của tôi:

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 

Các lỗi tôi nhận được là:

ERROR: schema "employees" does not exist 

Xin lỗi - người lao động đã id không employee.id

+0

Sự cố là gì? Điều gì là sai với kết quả bạn đang nhận được từ 'SELECT'? –

+0

Bạn có cần định hướng employee_id trong mệnh đề where? – kenchilada

Trả lời

18

Đây không phải là những gì bạn đang tìm kiếm?

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

Cảm ơn sự giúp đỡ – DBurton

0

Hãy thử sử dụng truy vấn này để thay thế:

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

SqlFiddle

+0

empgroups không có workorder_id - nó có workgroup_id – DBurton

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

Bảng employees là không cần thiết ở tất cả cho truy vấn này. USING rút ngắn cú pháp trong trường hợp này. Cũng như bí danh bảng.

+0

Thật tuyệt vời khi biết! – DBurton

Các vấn đề liên quan