我需要帮助找到在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
条件。
如果您使用的是最新版本的 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