如何在 VARRAY 字段中左加入

问题描述 投票:0回答:1

我需要帮助找到在oralce db中编写查询的正确方法。现在我有这样的疑问:

SELECT a.ID, a.LIQUIDITA_DERVT.ADDRESS, b.GROUP
FROM schema.tale_name a,table(a.LIQUIDITA_DERVT.MARGINI_DERVT) b

在此查询中

schema.tale_name a
是具有多种sql类型的表。其中之一是
a.LIQUIDITA_DERVT.MARGINI_DERVT
,它是嵌套在
a.LIQUIDITA_DERVT
中的另一种 sql 类型的变量数组,这也是一种 sql 类型。

此查询的问题是它仅检索存在

a.LIQUIDITA_DERVT.MARGINI_DERVT
的行,但我需要检索所有行,因为没有
where
条件。

sql database oracle oracle11g
1个回答
0
投票

如果您使用的是最新版本的 Oracle (12c+),您可以使用

outer apply
:

SELECT a.ID, a.LIQUIDITA_DERVT.ADDRESS, b.GROUPa
FROM tale_name a
OUTER APPLY table(a.LIQUIDITA_DERVT.MARGINI_DERVT) b

在早期版本中(正如您标记的11g),您可能可以使用带有虚拟连接条件的普通外部连接,尽管这可能会因更复杂的查询而崩溃:

SELECT a.ID, a.LIQUIDITA_DERVT.ADDRESS, b.GROUPa
FROM tale_name a
LEFT JOIN table(a.LIQUIDITA_DERVT.MARGINI_DERVT) b ON 1=1

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.