SQL Count函数,仅显示唯一结果(明显不起作用)

时间:2012-06-28 16:33:17

标签: sql oracle count

我有两个表:项目和任务。项目由任务组成。我想创建一个视图,其中所有项目都列出了与项目相关的任务量。这就是我尝试过的:

    SELECT 
   "PROJECTS"."P_ID" "P_ID", 
  (
    SELECT
        COUNT(*)
    FROM
       "TASKS"
    WHERE 
      "TASKS"."PROJECT" = "PROJECTS"."P_ID"
 ) AS "Amount of Tasks" 
 FROM
     "PROJECTS", "TASKS"

 WHERE "TASKS"."PROJECT"="PROJECTS"."P_ID"

不幸的是,它会多次返回一个项目,具体取决于他们拥有的任务量。例如,项目1有3个任务,因此它在tableview中显示3次。我怎么能防止这种情况?我尝试在第一次选择后添加不同但我得到了这个错误:

ORA-01791: not a SELECTed expression

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:6)

您通常希望加入这两个表并执行GROUP BY。像

这样的东西
SELECT p_id, count(*)
  FROM projects,
       tasks
 WHERE tasks.project = projects.p_id
 GROUP BY p_id

如果你真的想使用标量子查询方法(效率较低),你可以做类似的事情

SELECT p_id,
       (SELECT COUNT(*)
          FROM tasks
         WHERE tasks.project = projects.p_id)
  FROM projects