首页 > 解决方案 > MySQL根据子表状态条件检查创建视图

问题描述

表:任务(父)

id | name | ...(other columns)

表:task_history(子)

id | task_id(fk) | date | status(PENDING,OVERDUE,COMPLETE) | ...(other columns)

子表具有基于不同日期的父项的多个条目。

我想根据以下条件检查创建一个视图,以进行直到今天的日期比较task_status_viewtask_id | current_status(每个条目应该只有一个task.id

标签: mysqlsqlview

解决方案


您正在寻找的是所谓的条件聚合。

select
  task_id,
  case
    when sum(status = 'OVERDUE') > 0 then 'OVERDUE'
    when sum(status = 'PENDING') > 0 then 'PENDING'
    else                                  'COMPLETE'
  end as total_status
from task_histories
group by task_id
order by task_id;

(在 MySQL 中,true 等于 1,false 等于 0,所以我们可以将条件相加。)


推荐阅读