MySQL根据子表状态条件检查创建视图
Posted
技术标签:
【中文标题】MySQL根据子表状态条件检查创建视图【英文标题】:MySQL create view based on child table status condition check 【发布时间】:2021-06-14 06:02:39 【问题描述】:表:任务(父级)
id | name | ...(other columns)
表:task_histories(子)
id | task_id(fk) | date | status(PENDING,OVERDUE,COMPLETE) | ...(other columns)
子表有多个基于不同日期的父项。
我想根据以下条件检查创建一个带有task_id | current_status
的视图task_status_view
,以进行直到今天的日期比较。 (每个task.id
应该只有一个条目)
status = 'OVERDUE'
的条目,则将current_status
视为'O'
ELSE IF: 有任何带有status = 'PENDING'
的条目然后将current_status
视为'P'
ELSE:如果有上述任何一项,则将current_status
视为'COMPLETE'
【问题讨论】:
你试过case了吗? 我正在进行 sql 查询,但甚至无法为每个任务执行一个条目。 【参考方案1】:您要查找的内容称为条件聚合。
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,所以我们可以将条件相加。)
【讨论】:
谢谢...我认为它应该可以工作。但让我测试所有情况。你能添加create view
语法吗?
无需进一步;我已经基于此创建了视图谢谢..
不客气 :-) 如果要包含尚未开始的任务,则必须顺便从任务表和外部连接历史中进行选择。以上是关于MySQL根据子表状态条件检查创建视图的主要内容,如果未能解决你的问题,请参考以下文章