2013-05-16 21 views
7

Ho il seguente molti-a-molti tra i dipendenti e gruppi di lavoro:SQL per una relazione molti a molti rapporti con interno si unisce

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

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

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

Sto cercando di scrivere SQL che elencherà tutti i workorders per un dipendente in base ai gruppi di lavoro a cui appartiene il dipendente.

Questo è il mio tentativo:

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 

L'errore che ottengo è:

ERROR: schema "employees" does not exist 

Sorry - il dipendente ha id non employee.id

+0

Qual è il problema? Cosa c'è di sbagliato con i risultati ottenuti da 'SELECT'? –

+0

È necessario disambiguare l'id_dipendente nella clausola where? – kenchilada

risposta

18

Non è questo quello che stai cercando?

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

Grazie per l'aiuto – DBurton

0

Provare ad usare questa query invece:

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

SqlFiddle

+0

empgroups non ha workorder_id - ha workgroup_id – DBurton

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

La tabella employees non è necessaria a tutti per questa query. USING accorcia la sintassi in questo caso. Come fanno gli alias di tabella.

+0

Questo è bello sapere! – DBurton

Problemi correlati