0

有没有更好的方法?我正在尝试提取 QC 中特定文件夹下的所有内容

SELECT A.AL_FATHER_ID, A.AL_ITEM_ID, A.AL_DESCRIPTION as Folder
FROM All_LISTS A
where A.AL_DESCRIPTION=@folderName@

union
SELECT B.AL_FATHER_ID, B.AL_ITEM_ID, B.AL_DESCRIPTION as Folder
FROM All_LISTS B
where B.AL_FATHER_ID = (select A.AL_ITEM_ID from ALL_LISTS A where A.AL_DESCRIPTION=@folderName@)

union
SELECT B.AL_FATHER_ID, B.AL_ITEM_ID, B.AL_DESCRIPTION as Folder
FROM All_LISTS B
where B.AL_FATHER_ID in (select C.AL_ITEM_ID from ALL_LISTS C where C.AL_FATHER_ID= (select A.AL_ITEM_ID from ALL_LISTS A where A.AL_DESCRIPTION=@folderName@))

union
SELECT B.AL_FATHER_ID, B.AL_ITEM_ID, B.AL_DESCRIPTION as Folder
FROM All_LISTS B
where B.AL_FATHER_ID in (select D.AL_ITEM_ID from ALL_LISTS D where D.AL_FATHER_ID in (select C.AL_ITEM_ID from ALL_LISTS C where C.AL_FATHER_ID= (select A.AL_ITEM_ID from ALL_LISTS A where A.AL_DESCRIPTION=@folderName@)))

union
SELECT B.AL_FATHER_ID, B.AL_ITEM_ID, B.AL_DESCRIPTION as Folder
FROM All_LISTS B
where B.AL_FATHER_ID in (select E.AL_ITEM_ID from ALL_LISTS E where E.AL_FATHER_ID in(select D.AL_ITEM_ID from ALL_LISTS D where D.AL_FATHER_ID in (select C.AL_ITEM_ID from ALL_LISTS C where C.AL_FATHER_ID= (select A.AL_ITEM_ID from ALL_LISTS A where A.AL_DESCRIPTION=@folderName@))))

union
SELECT B.AL_FATHER_ID, B.AL_ITEM_ID, B.AL_DESCRIPTION as Folder
FROM All_LISTS B
where B.AL_FATHER_ID in (select F.AL_ITEM_ID from ALL_LISTS F where F.AL_FATHER_ID in (select E.AL_ITEM_ID from ALL_LISTS E where E.AL_FATHER_ID in(select D.AL_ITEM_ID from ALL_LISTS D where D.AL_FATHER_ID in (select C.AL_ITEM_ID from ALL_LISTS C where C.AL_FATHER_ID= (select A.AL_ITEM_ID from ALL_LISTS A where A.AL_DESCRIPTION=@folderName@)))))

谢谢你的帮助

4

1 回答 1

0

如果您真的绑定到 SQL,您可能会很幸运并且可以use Oracle 11gR2's recursive subquery factoring clause,请参阅http://technology.amis.nl/2009/09/01/oracle-rdbms-11gr2-goodbye-connect-by-or-the-分层查询结束,我们知道它/

否则,您可能希望以迭代的方式执行您现在所做的事情。这不会使事情变得更简单,但比您发布的解决方案更通用(并且可能更优雅),因为该解决方案仅限于固定数量的层次结构级别。

于 2013-11-28T08:58:38.260 回答