不在 public 架构中时加入查询
Join query when not in public schema
很抱歉这个菜鸟问题..但是当我在不在 Public..
在 public 模式中写入右外连接
SELECT
A.pka,
A.c1,
B.pkb,
B.c2
FROM
A
RIGHT OUTER JOIN B ON A .pka = B.fka;
我正在尝试这个
SELECT
A.pka,
A.c1,
B.pkb,
B.c2
FROM
schema.A
RIGHT OUTER JOIN B ON A .pka = B.fka;
然后我得到一个错误"Relation 'B' does not exist"
我也试过其他几种方法都没有成功
谢谢
编辑,我的数据更好的例子。
这是我的查询,我收到错误消息“缺少 table t1
的 FROM 子句条目
SELECT
t1.person_id
t1.age
t2.person_id
t2.city
FROM
not_public.t1 A
RIGHT OUTER JOIN not_public.t2 B ON A.person_id = B.person_id
SELECT
A.pka,
A.c1,
B.pkb,
B.c2
FROM
some_schema.table_a A
RIGHT OUTER JOIN other_schema.table_b B ON A.pka = B.fka
;
- 如果架构在
search_path
中,您可以省略 schema_xxx.
前缀。
- search_path从左到右搜索,使用第一个匹配项。
- 为了简单和可读性,您可以使用相关名称 ("aliases") 作为 table 引用(此处:
A
和 B
)
让我们从您的查询中获取 FROM 部分:
...
FROM not_public.t1 A
RIGHT OUTER JOIN not_public.t2 B ...
您正在使用两个 tablet1 和 t2。但是您为两个 table 都定义了一个别名。 t1
未被调用 A
且 t2
未被调用 B
。
但是在您的 SELECT 列表中您使用:
SELECT
t1.person_id
t1.age
t2.person_id
t2.city
但是因为您 "renamed" tables t1 和 t2(通过别名)这些名称不再可用。一旦为 table 引入了别名,就必须 始终 使用该别名:
SELECT
a.person_id
a.age
b.person_id
b.city
很抱歉这个菜鸟问题..但是当我在不在 Public..
在 public 模式中写入右外连接
SELECT
A.pka,
A.c1,
B.pkb,
B.c2
FROM
A
RIGHT OUTER JOIN B ON A .pka = B.fka;
我正在尝试这个
SELECT
A.pka,
A.c1,
B.pkb,
B.c2
FROM
schema.A
RIGHT OUTER JOIN B ON A .pka = B.fka;
然后我得到一个错误"Relation 'B' does not exist" 我也试过其他几种方法都没有成功
谢谢
编辑,我的数据更好的例子。
这是我的查询,我收到错误消息“缺少 table t1
的 FROM 子句条目SELECT
t1.person_id
t1.age
t2.person_id
t2.city
FROM
not_public.t1 A
RIGHT OUTER JOIN not_public.t2 B ON A.person_id = B.person_id
SELECT
A.pka,
A.c1,
B.pkb,
B.c2
FROM
some_schema.table_a A
RIGHT OUTER JOIN other_schema.table_b B ON A.pka = B.fka
;
- 如果架构在
search_path
中,您可以省略schema_xxx.
前缀。 - search_path从左到右搜索,使用第一个匹配项。
- 为了简单和可读性,您可以使用相关名称 ("aliases") 作为 table 引用(此处:
A
和B
)
让我们从您的查询中获取 FROM 部分:
...
FROM not_public.t1 A
RIGHT OUTER JOIN not_public.t2 B ...
您正在使用两个 tablet1 和 t2。但是您为两个 table 都定义了一个别名。 t1
未被调用 A
且 t2
未被调用 B
。
但是在您的 SELECT 列表中您使用:
SELECT
t1.person_id
t1.age
t2.person_id
t2.city
但是因为您 "renamed" tables t1 和 t2(通过别名)这些名称不再可用。一旦为 table 引入了别名,就必须 始终 使用该别名:
SELECT
a.person_id
a.age
b.person_id
b.city