我有两个表:项目和任务。项目由任务组成。我想创建一个视图,其中所有项目都列出了与项目相关的任务量。这就是我尝试过的:
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
任何帮助表示赞赏!
答案 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