gpt4 book ai didi

sql - 带有 Join 的 Oracle 子查询 - 如何引用子查询列?

转载 作者:行者123 更新时间:2023-12-02 04:47:37 27 4
gpt4 key购买 nike

我有两个表,Project 和 Project_Property,从 Project 到 Project_Property 为 1 到 many。我正在尝试使用子查询通过 Project 获取三个属性并加入 Project(示例中的“Repo”)。警告:我主要是一个 SQL Server 人员,所以我试图将我所知道的在 SQL 中工作的东西应用到 Oracle 中。

我是这样写的:

select s1.Repo, s1.Solution, p1.Project, a1.Assembly
from
(
select p.name as "Repo", pp.value as "Solution"
from project p join project_property pp on p.id=pp.project_id
where pp.name='mssolutionname'
) s1 join
(
select p.name as "Repo", pp.value as "Project"
from project p join project_property pp on p.id=pp.project_id
where pp.name='msprojectname'
) p1 on p1.Repo=s1.Repo join
(
select p.name as "Repo", pp.value as "Assembly"
from project p join project_property pp on p.id=pp.project_id
where pp.name='msassemblyname'
) a1 on s1.Repo=a1.Repo;

但是当我运行它时我得到:

ORA-00904: "S1"."REPO": invalid identifier

Oracle 中这种类型的查询是否有不同的格式?我如何引用在外部主查询的子查询中选择的值,特别是关于 JOINing 子查询。或者我只是有一个错字我错过了。不是第一次了。

TIA。

最佳答案

如果您使用双引号为列别名,则列名将区分大小写。由于您将 p.name 编码为“Repo”,因此列必须被称为 si."Repo"。如果您不使用双引号 (p.name as repo),那么您可以以不区分大小写的方式引用它 (si.repo, si .Repo, 或 si.rEPo)

关于sql - 带有 Join 的 Oracle 子查询 - 如何引用子查询列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19493877/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com