我有三个表来描述有任务的工作:
job:
jobId (int)
name (varchar)
task:
taskId (int)
jobId (int)
statusId (int)
name
taskStatus:
taskStatusId (int)
name (varchar)
priority (int)
我想向用户显示一个显示每个作业的列表,在列表中,我需要显示具有最高和最低优先级的任务的名称和状态。 例如:
Job Highest priority task Highest pri. task status
Build a house Build the base Very high
我正在使用MySQL,到目前为止我只能使用触发器查询并存储作业表中每个作业的最高和最低任务的名称和状态,但我想在选择查询,如果可能的话。
有什么建议吗? 感谢
答案 0 :(得分:0)
解决此问题的一种方法是使用嵌套标量子查询:
select j.name,
(select ts.name
from task t join
taststatus ts
on t.name = ts.name
where t.jobid = j.jobid
order by priority
limit 1
) as HighestPriority,
(select ts.status
from task t join
taststatus ts
on t.name = ts.name
where t.jobid = j.jobid
order by priority
limit 1
) as HighestPriorityStatus
from job j;
如果您有适当的索引,这可能会带来最佳效果:task(jobid, name)
,taskstatus(name, priority, status)
。