【发布时间】:2013-05-20 21:24:47
【问题描述】:
我在一个工作查询中加入多个表时确实遇到了麻烦。
有 5 个不同的表:
- 事件存储:eventid、staffnumber、日期、开始和结束日期..
- Event_overview 存储:eventid、clientid..
- 费率存储:clientid、rateswaiter、rateschef、ratesteamleader..
- 员工:员工编号、名字、姓氏..
- 薪水:员工,薪水
我想创建一个表格,为我提供按人员 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
我想将这些信息放在一个表中,这样我就可以开始对每个员工进行多重和汇总,并将上述查询用作子查询。
希望有人可以帮助我。 提前谢谢,
【问题讨论】:
-
你有什么问题?我看到的唯一错误是您应该使用
rateTeamleader、rateWaiter和rateChef。如果您有一个将职位名称与费率相关联的表格,那么您将更具可扩展性,然后您可以在职位上加入此表格,而不是使用 CASE 语句。 -
那么我如何加入这两个表?通过交叉连接?
-
哪两张表?这些是查询,而不是表。如果需要,您可以将它们作为子查询加入。或者您可以使用 CASE 语句作为表达式的一部分,在加入后乘以小时数。
-
不清楚你想要什么作为最终结果。发布一些示例数据和所需的结果。
-
抱歉,当然是查询。但正如您在我的评论中看到的那样,有两个选择查询,我想加入。我使用 where 子句 where eventto.clientid in (SELECT event.clientid....但是当我插入 case 语句时 mysql 不知道列 rateTeamleader 等。
标签: mysql