加入多个问题

时间:2013-05-20 21:24:47

标签: mysql

我真的无法在工作查询中加入多个表。

有5种不同的表格:

  1. 活动存储:eventid,staffnumber,date,start和end date ..
  2. event_overview存储:eventid,clientid ..
  3. 存储费率:clientid,rateswaiter,rateschef,ratesteamleader ..
  4. 员工:staffid,firstname,lastname ..
  5. 薪水:staffid,薪水
  6. 我想创建一个表,根据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
    

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

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

1 个答案:

答案 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

如果您使用ratesclientidposition列对rate表进行标准化会更好。然后连接将是:

inner join rates on evento.clientid = rates.clientid and staff.position = rates.position

您只需TIMEDIFF(house, pause) * rate即可获得TotalSalary