我有一个表任务,表中有一个外键,注释。
+-------------+ +-----------+
|Task | |Comment |
+-------------+ +-----------+
|t_id (PK) | |c_id (PK) |
|t_title | |c_task (FK)|
|t_description| |c_comment |
|t_state | |c_date |
+-------------+ +-----------+
我需要获取所有任务,以及最后评论的日期(如果有的话),并且我需要知道按什么顺序订购或消除具有特定状态的记录。都在同一个程序中。我现在的问题是,如果我尝试这样做,我只会收到附有评论的任务。如果任务没有附加评论,则不会显示。
create procedure getalltask(state boolean, orderby varchar(30))
begin
IF state = true then
select
t_id,
t_title,
t_description,
t_state,
DATE_FORMAT(c_date, '%e/%c %H:%i') as c_datetime
from task, comment
where task.t_state = orderBy
and task.t_id = comment.c_task
and c_date IN
(
select MAX(c_date)
from comment
where task.t_id = comment.c_task
and MAX(c_id)
)
ELSE
select
t_id,
t_title,
t_description,
t_state,
DATE_FORMAT(c_date, '%e/%c %H:%i') as c_datetime,
@nextid := DATE_FORMAT(c_date, '%e/%c %H:%i'),
c_date
from task, comment
and task.t_id = taskcomment.c_task
and c_date IN
(
select MAX(c_date)
from comment
where task.t_id = comment.c_task
)
order by orderby
end if;
end$$
我尝试过嵌套 if,但这似乎不起作用,而且我在内部的存储过程和函数方面也遇到了问题,但也许你有一些想法、建议和解决方案?