2012-06-28 18 views
1

我有两个表:项目和任务。一个项目由任务组成。我想创建一个视图,其中所有项目都列出了与项目相关的任务数量。这是我试过的:SQL计数功能,只显示唯一的结果(明显不工作)

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 

任何帮助表示赞赏!

回答

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 
+0

谢谢!你的第一个解决方案完全适合我! – friday