每个单独行的子查询
Subquery for each separate row
我得到了获取指定 user_id
的组任务的查询
select tasks.id, tasks.title, tasks.description, tasks.task, g.name
from tasks
join group_task gt on tasks.id = gt.task_id
join `groups` g on g.id = gt.group_id where gt.group_id in (select g.id from user_group
join `groups` g on g.id = user_group.group_id where user_group.user_id = 1)
我想为每一行添加额外的单元格,以指示任务是否由用户完成。我想出了这样的查询:
select count(*) done from user_task_done where task_id = 5 and user_id = 1
问题是我如何为每一行执行此查询(我还需要以某种方式从任务中获取当前 task_id)并将结果添加到名为 'done' 的 exta 列中?
您可以使用子选择。
select count(*) as done
from user_task_done
where
1=1
and task_id in (select task_id from from task)
and user_id in (select user_id from from users where user_id > 5)
在子选择中,您也可以添加过滤器。
您可以从子查询中添加单个字段,只要它只有 returns 一列和一行
select tasks.id, tasks.title, tasks.description, tasks.task, g.name, (select count(*) from user_task_done where task_id = tasks.id and user_id = 1) done
from tasks
join group_task gt on tasks.id = gt.task_id
join `groups` g on g.id = gt.group_id where gt.group_id in (select g.id from user_group
join `groups` g on g.id = user_group.group_id where user_group.user_id = 1)
我得到了获取指定 user_id
的组任务的查询select tasks.id, tasks.title, tasks.description, tasks.task, g.name
from tasks
join group_task gt on tasks.id = gt.task_id
join `groups` g on g.id = gt.group_id where gt.group_id in (select g.id from user_group
join `groups` g on g.id = user_group.group_id where user_group.user_id = 1)
我想为每一行添加额外的单元格,以指示任务是否由用户完成。我想出了这样的查询:
select count(*) done from user_task_done where task_id = 5 and user_id = 1
问题是我如何为每一行执行此查询(我还需要以某种方式从任务中获取当前 task_id)并将结果添加到名为 'done' 的 exta 列中?
您可以使用子选择。
select count(*) as done
from user_task_done
where
1=1
and task_id in (select task_id from from task)
and user_id in (select user_id from from users where user_id > 5)
在子选择中,您也可以添加过滤器。
您可以从子查询中添加单个字段,只要它只有 returns 一列和一行
select tasks.id, tasks.title, tasks.description, tasks.task, g.name, (select count(*) from user_task_done where task_id = tasks.id and user_id = 1) done
from tasks
join group_task gt on tasks.id = gt.task_id
join `groups` g on g.id = gt.group_id where gt.group_id in (select g.id from user_group
join `groups` g on g.id = user_group.group_id where user_group.user_id = 1)