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

fri*_*day 1 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"
Run Code Online (Sandbox Code Playgroud)

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

ORA-01791: not a SELECTed expression
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!

Jus*_*ave 6

你通常想要加入这两个表并做一个GROUP BY.就像是

SELECT p_id, count(*)
  FROM projects,
       tasks
 WHERE tasks.project = projects.p_id
 GROUP BY p_id
Run Code Online (Sandbox Code Playgroud)

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

SELECT p_id,
       (SELECT COUNT(*)
          FROM tasks
         WHERE tasks.project = projects.p_id)
  FROM projects
Run Code Online (Sandbox Code Playgroud)