テーブルに外部キーを持つテーブル、タスク、コメントがあります。
+-------------+ +-----------+
|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 を試してみましたが、うまくいかないようでした。内部のストアド プロシージャと関数にも問題がありましたが、アイデア、提案、解決策があれば教えてください。