我真的无法在工作查询中加入多个表。
有5种不同的表格:
我想创建一个表,根据staffid分组显示所有事件的结果,表示每个事件的总工作小时数,根据每小时的角色计算的速率,再乘以他们工作的小时数,工资,工资*小时
我已经开始使用两个不同的表,它们可以完美地运行。
Select event.staffid, staff.firstname,
staff.lastname, salary.wage, evento.clientid,
event.date, TIMEDIFF( hours, pause ) AS Total, event.role
from event
inner join evento on event.eventid=evento.eventid
inner join salary on event.staffid=salary.staffid
inner join staff on event.staffid=staff.staffid
第二个查询
SELECT event.clientid
FROM evento
JOIN rates ON evento.clientid = rates.clientid
group by evento.clientid
后来我想根据工作人员的角色决定选择哪个费率
CASE WHEN Position = 'Teamleader'
THEN (Teamleader)
WHEN Position = 'waiter'
THEN (waiter)
WHEN Position = 'chef'
THEN (chef)
ELSE '0'
END AS revenue
我希望将这些信息放在一个表中,这样我就可以开始对每个工作人员进行多次学习和总结,并将上述查询用作子查询。
希望有人可以帮助我。 提前谢谢,
答案 0 :(得分:0)
我觉得这样的事情就是你想要的:
Select event.staffid, staff.firstname,
staff.lastname, salary.wage, evento.clientid,
event.date, TIMEDIFF( hours, pause ) AS Total, event.role,
TIMEDIFF(hours, pause) *
case position
when 'Teamleader' then rateteamleader
when 'waiter' then ratewaiter
when 'chef' then ratechef
end TotalSalary
from event
inner join evento on event.eventid=evento.eventid
inner join salary on event.staffid=salary.staffid
inner join staff on event.staffid=staff.staffid
inner join rates on evento.clientid = rates.clientid
如果您使用rates
,clientid
,position
列对rate
表进行标准化会更好。然后连接将是:
inner join rates on evento.clientid = rates.clientid and staff.position = rates.position
您只需TIMEDIFF(house, pause) * rate
即可获得TotalSalary
。