sql无效标识符,使用别名
我是sql新手,正在努力处理嵌套子查询。sql无效标识符,使用别名,sql,oracle,nested,Sql,Oracle,Nested,我是sql新手,正在努力处理嵌套子查询。 这就是我所做的,试图找到至少重修过3门课程至少一次的人。它不起作用。我知道这看起来也很奇怪 完全公开:我还没有测试过语法错误,但我确实看到了代码中的两个主要问题。 答:您需要为子查询提供别名 B:您需要在子查询中使用变量名,同时在外部查询中使用新别名(注意,我在内部查询中为student.id指定了一个别名“student\u id”) 如果您将原始帖子(或后续答案)中出现的错误包括在内,这将非常有用。谢谢!我意识到问题在于学生id是不可见的,但在我给出
这就是我所做的,试图找到至少重修过3门课程至少一次的人。它不起作用。我知道这看起来也很奇怪 完全公开:我还没有测试过语法错误,但我确实看到了代码中的两个主要问题。 答:您需要为子查询提供别名 B:您需要在子查询中使用变量名,同时在外部查询中使用新别名(注意,我在内部查询中为student.id指定了一个别名“student\u id”)
如果您将原始帖子(或后续答案)中出现的错误包括在内,这将非常有用。谢谢!我意识到问题在于学生id是不可见的,但在我给出子查询别名后,它仍然显示错误。SQL错误:ORA-00904:“学生ID”:无效标识符破解并隔离问题:内部查询是否单独返回值或错误?我认为这里唯一的问题是
count(student\u id)
应该替换为count(*)
我已经测试了内部查询,它工作正常。在我将其更改为count(*)后,retakes和student.id现在都是无效标识符。^ Nick在这里查看。单独运行子查询,看看它是否正常工作。我猜您可能忘记在内部查询中将student.id别名为“student\u id”@Nick.McDermaid:我将编辑为count(*),但是count(学生id)在这里应该是一样的。应该是这样,但我认为不存在列学生id
。但是我们不知道-没有表DDL。我怀疑如果OP花时间发布它,他可能会注意到一些列名不正确。
select student.ID, course_id
from (
select student.ID, course_id
from student,takes
where student.id = takes.id
group by student.ID,course_id
having count(student.ID) >1
)
group by student.id
having count(*)>2
select
retakes.student_id,
retakes.course_id
from
(
select
student.ID student_id,
course_id
from student,takes
where student.id = takes.id
group by student.ID, course_id
having count(*) >1
) retakes
group by retakes.student_id
having count(*)>2