【发布时间】:2015-01-14 11:44:28
【问题描述】:
我有
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_BY_ROOT 使用 1 个额外列:CONTENTNAME from CONTENT,由 IDCONTENT 关联;如果没有关联内容,则应该是 NULL(IDCONTENT 是 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 的值)
最奇怪的是,昨天在开发数据库上查询按预期工作,而现在却没有。所以我创建了一个小提琴来检查我是否可以重现以前的结果并且它工作正常......http://sqlfiddle.com/#!4/ecb9d/1http://sqlfiddle.com/#!4/ecb9d/3
是什么导致了这种行为变化?
【问题讨论】:
标签: sql oracle10g connect-by hierarchical-query