Per ottenere l'output finale desiderato...
... usa un outer join per legare i record delle ferie prese alle altre tabelle. Questo darà zero time_duration
per tipi di congedo che il dipendente non ha usufruito.
select emp.Employee_ID
, le.leavetype
, le.leavebalance
, sum (el.Time_Duration) as total_Time_Duration
from employee emp
inner join leave_eligibility le
on le.department= emp.department
and le.designation= emp.designation
left outer join Employee_leave el
on el.EmployeeID = emp.Employee_ID
and el.leave_type = le.leavetype
group by emp.Employee_ID
, le.leavetype
, le.leavebalance
;
Il tuo problema immediato:
La tua vista ha riferimenti a una colonna EID
sebbene nessuna delle tue tabelle pubblicate abbia una colonna con quel nome. Allo stesso modo c'è confusione tra Time_Duration
e time_period
.
Più in generale, troverai la vita molto più facile se usi lo stesso identico nome per le colonne comuni (ad esempio, usa costantemente employee_id
o employeeid
, non tagliare e cambiare).