0

我真的很难在一个工作查询中加入多个表。

有5个不同的表:

  1. 事件存储:eventid、staffnumber、日期、开始和结束日期..
  2. event_overview 存储:eventid,clientid..
  3. 费率存储:clientid、rateswaiter、rateschef、ratesteamleader..
  4. 员工:staffid,名字,姓氏..
  5. 薪水:职员,薪水

我想创建一个表格,为我提供按人员 ID 分组的所有事件的结果,指示他们在每个事件中工作的总小时数、根据他们每小时角色的费率乘以他们工作的小时数、薪水、薪水*小时

我从两张不同的桌子开始,它们可以完美地独立工作。

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

我想将这些信息放在一个表中,这样我就可以开始对每个员工进行多重和总结,并将上述查询用作子查询。

希望可以有人帮帮我。提前致谢,

4

1 回答 1

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

于 2013-05-20T22:05:11.757 回答