我在弄清楚这个SQL语句时遇到了一些麻烦。我有三个表employee
,job
和job type
。
job type
是参考表。它有工作的名称,工作需要多长时间,以及该工作的费用。
job
记录了由哪位员工执行的工作以及执行的日期。它链接到job type
jobname
。
employee
有员工姓名,employee id
。它通过job
链接到employee id
表。
我需要显示所有员工的名单,以及他们在特定年份所做的最便宜和最昂贵的工作。
我想我可能需要嵌入式选择和一些joins
。也许是union
复杂性离我的经验太远了。我甚至不确定在哪里说实话。
答案 0 :(得分:0)
您应该使用employee
表作为查询中的主表,这样您每个员工就会获得一行,即使该员工与0个工作相关联。然后使用外部联接到job
和job_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