1

我有一个任务表,每个任务都有一task_id列和一parent_id列。
我正在尝试构建一个查询,该查询返回每个,它在父列中显示task_id的次数。 我试过这个查询: idid

SELECT
     task_id, parent_id, 
     (SELECT COUNT( * ) 
      FROM  `tasks` 
      WHERE parent_id = task_id) AS count_parents 
FROM tasks

此查询无效。我希望这个问题足够清楚。

4

4 回答 4

5

如果您想包括所有任务,无论它们是否是父级,

select tasks.task_id,count(parent.parent_id)
from tasks
left join tasks parent on tasks.task_id=parent.parent_id
group by tasks.task_id;

如果您只想要作为父母的任务,那是微不足道的:

select parent_id,count(*)
from tasks
group by parent_id;

(后者可能需要一个where parent_id is not null或这样的,这取决于你如何表示没有父任务的任务)。

于 2013-01-24T22:29:24.007 回答
1

看起来你想要这个:

SELECT task_id, 
  parent_id, 
  COUNT(parent_id) AS count_parents
FROM tasks
GROUP BY task_id, parent_id
于 2013-01-24T22:26:28.160 回答
1

尝试这个:

select task_id,parent_id, count(parent_id) as count_parents 
from `tasks` 
group by task_id,parent_id;

在这种情况下,您需要一个分组依据,希望对您有所帮助。

于 2013-01-24T22:28:29.577 回答
0
SELECT t2.task_id, t2.parent_id, 
     (SELECT COUNT( * ) FROM  `tasks` t1 
         WHERE t1.parent_id = t2.task_id) AS count_parents 
 FROM tasks t2

我认为从你的问题

于 2013-01-24T22:27:15.717 回答