Sql 左外连接,通过根连接

Sql 左外连接,通过根连接,sql,oracle10g,connect-by,hierarchical-query,Sql,Oracle10g,Connect By,Hierarchical Query,我有 SELECT CONNECT_BY_ROOT TAXY.IDCATEGORY AS IDBRANCH , TAXY.IDCATEGORY , TAXY.IDPARENTCATEGORY , TAXY.IDCONTENT , TAXY.CATEGORYNAME , LEVEL AS LVL FROM TAXONOMY TAXY CONNECT BY TAXY.IDCATEGORY = PRIOR TAXY.IDPARENTCATEGORY 并希望添加到表CONTE

我有

SELECT 
  CONNECT_BY_ROOT TAXY.IDCATEGORY AS IDBRANCH
  , TAXY.IDCATEGORY
  , TAXY.IDPARENTCATEGORY
  , TAXY.IDCONTENT
  , TAXY.CATEGORYNAME
  , LEVEL AS LVL
FROM TAXONOMY TAXY
CONNECT BY TAXY.IDCATEGORY = PRIOR TAXY.IDPARENTCATEGORY
并希望添加到表
CONTENT
中的每个条目
CONTENTNAME
列中

我试过:

SELECT 
  CONNECT_BY_ROOT TCT.CONTENTNAME AS ENDNODECONTENTNAME
  , TAXY.IDCATEGORY
  , TAXY.IDPARENTCATEGORY
  , TAXY.IDCONTENT
  , TCT.CONTENTNAME 
  , TAXY.CATEGORYNAME
  , LEVEL AS LVL
FROM TAXONOMY TAXY
LEFT OUTER JOIN CONTENT TCT ON TCT.IDCONTENT = TAXY.IDCONTENT
CONNECT BY TAXY.IDCATEGORY = PRIOR TAXY.IDPARENTCATEGORY
期望得到相同的结果,仅使用
CONNECT\u BY_ROOT
使用一个额外的列:
CONTENTNAME
from
CONTENT
,由
IDCONTENT
关联;如果没有相关内容(
IDCONTENT
NULL
),则应为
NULL

相反,我只获取
IDCONTENT
不是
NULL
的行。我该怎么做才能得到这些行呢

我也试过:

SELECT 
  CONNECT_BY_ROOT TAXY.IDCATEGORY AS IDBRANCH
  , TAXY.IDCATEGORY
  , TAXY.IDPARENTCATEGORY
  , TAXY.IDCONTENT
  , TCT.CONTENTNAME 
  , TAXY.CATEGORYNAME
  , LEVEL AS LVL
FROM TAXONOMY TAXY
LEFT OUTER JOIN CONTENT TCT ON TCT.IDCONTENT = TAXY.IDCONTENT
CONNECT BY TAXY.IDCATEGORY = PRIOR TAXY.IDPARENTCATEGORY
我也试过了

SELECT 
  SYS_CONNECT_BY_PATH(TAXY.CATEGORYNAME, ' \ ') AS BREADCRUMBSPATH
  , TAXY.IDCATEGORY
  , TAXY.IDPARENTCATEGORY
  , TAXY.IDCONTENT
  , TCT.CONTENTNAME 
  , TAXY.CATEGORYNAME
  , LEVEL AS LVL
FROM TAXONOMY TAXY
LEFT OUTER JOIN CONTENT TCT ON TCT.IDCONTENT = TAXY.IDCONTENT
START WITH TAXY.IDPARENTCATEGORY IS NULL CONNECT BY TAXY.IDPARENTCATEGORY = PRIOR TAXY.IDCATEGORY
但是我得到了相同的结果(只有
IDCONTENT
不是
NULL
的值)

最奇怪的是,查询昨天在开发数据库上按预期工作,而现在不是。所以我创建了一个小提琴来检查我是否可以重现以前的结果,它工作得很好


是什么导致了这种行为的改变?

我仍然不知道发生了什么(仍然不起作用),但这种解决方案似乎在这两种情况下都很有效:

SELECT IDBRANCH, ENDNODEIDCONTENT, IDCATEGORY, IDPARENTCATEGORY, TAXYJ.IDCONTENT, TCT.CONTENTNAME AS ENDNODECONTENTNAME, CATEGORYNAME, LVL
FROM (
  SELECT CONNECT_BY_ROOT TAXY.IDCATEGORY AS IDBRANCH
  , CONNECT_BY_ROOT TAXY.IDCONTENT AS ENDNODEIDCONTENT
  , TAXY.IDCATEGORY
  , TAXY.IDPARENTCATEGORY
  , TAXY.IDCONTENT
  , TAXY.CATEGORYNAME
  , LEVEL AS LVL
FROM TAXONOMY TAXY
CONNECT BY TAXY.IDCATEGORY = PRIOR TAXY.IDPARENTCATEGORY
) TAXYJ 
LEFT OUTER JOIN CONTENT TCT ON TCT.IDCONTENT = TAXYJ.ENDNODEIDCONTENT