从最小和最大的多个表中选择多个项目

时间:2017-01-30 20:16:04

标签: mysql sql join multiple-tables

我在弄清楚这个SQL语句时遇到了一些麻烦。我有三个表employeejobjob type

job type是参考表。它有工作的名称,工作需要多长时间,以及该工作的费用。

job记录了由哪位员工执行的工作以及执行的日期。它链接到job type jobname

employee有员工姓名,employee id。它通过job链接到employee id表。

我需要显示所有员工的名单,以及他们在特定年份所做的最便宜和最昂贵的工作。

我想我可能需要嵌入式选择和一些joins。也许是union复杂性离我的经验太远了。我甚至不确定在哪里说实话。

1 个答案:

答案 0 :(得分:0)

您应该使用employee表作为查询中的主表,这样您每个员工就会获得一行,即使该员工与0个工作相关联。然后使用外部联接到jobjob_type表,按员工标识符分组,并使用作业表上的min()max()聚合函数来选择min和最高工作成本(如果有的话)。

这样的事情可以帮助你开始:

select employee.employee_id ,
  employee.employee_name, 
  min(job_type.cost),
  max(job_type.cost)
from employee 
  left outer join job on job.employee_id = employee.employee_id
  left outer join job_type on job_type.job_type_id = job.job_type_id
group by employee.employee_id, 
  employee.employee_name