我有类似以下表格:加入,而不是子查询
id user_id task task_closed
1 1 1 0
2 1 2 1
3 1 3 0
4 2 3 0
5 2 4 1
6 3 4 0
我需要的是一个查询,对于一个给定的任务将返回所有具有此任务,用途为他们每个人的数量他们有完整的未完成任务。
所以,如果我们谈论的任务3 我想
user_id pending
1 2
2 1
在
SELECT tasks.user_id,
(SELECT COUNT(*)
FROM tasks t2
WHERE t2.user_id=tasks.user_id AND t2.task_closed=0
)
FROM tasks
WHERE tasks.id=?
我也要重新写为
SELECT user_id,COUNT(*)
FROM tasks
WHERE task=? AND task_closed=0
GROUP_BY user_id
WHERE user_id IN (SELECT t2.user_id from tasks t2 WHERE task=?);
但我有一种强烈的感觉,应该有一种更有效的方式来做到这一点,以某种方式加入其中小精灵。
有关我应该怎么做的任何想法?
任务确实是hlods任务ID的列。 – epeleg
正如我怀疑:你是否尝试过查询? – Stephan
是的,它的工作。但不知何故,我仍然错过了在一般情况下如何做我想做的事情:(例如 - 假设我现在想要将此查询的结果与其他表结合起来(例如,获取一些基于user_id的数据)多次出现 - 就像用户喜欢的食物一样 - 我希望能得到多行数据,每个喜欢的食物都有当前结果的重复数据)我会在这里接受你的答案,但是如果你能提供更多的见解,我会很棒。 – epeleg