私は3つのテーブルを持っています。テーブルTest
、Folder
およびIteration
.
すべてtest
が でリンクされていFolder
ます。にFolder
リンクされているtest
は、他の多くの子ですfolders
。
これらfolders
のうち、階層の最上位のものはテーブルにリンクされていますIteration
。
ここで、テーブルのIteration_IDを更新したいと思います。テストと反復の間に「高速」接続を確立するためです。これは私の試みです:Test
update Test a set a.Iteration_ID =
(nvl((
--The Select Part
select b.ID from Iteration b inner join Folder c on b.Folder_ID = c.ID
where c.ID =
(
select * from
(
SELECT d.ID FROM Folder d START WITH d.ID = 135196 CONNECT BY PRIOR d.parent_id = d.id
order by LEVEL desc
)
where rownum= 1
)
--End Select Part
),0));
上記のクエリは機能しますが、d.ID に静的 ID があります。そこにa.Folder_IDを設定したいと思い ます:
update Test a set a.Iteration_ID =
(nvl((
--The Select Part
select b.ID from Iteration b inner join Folder c on b.Folder_ID = c.ID
where c.ID =
(
select * from
(
SELECT d.ID FROM Folder d START WITH d.ID = a.Folder_ID CONNECT BY PRIOR d.parent_id = d.id
order by LEVEL desc
)
where rownum= 1
)
--End Select Part
),0));
問題は、Oracle が a.folder_id を認識していないことです。
ORA-00904: "A"."FOLDER_ID": ungültiger Bezeichner
00904. 00000 - "%s: invalid identifier"
問題を解決したり、クエリを改善したりするためのより良い方法を知っている人はいますか?
たとえば、select * from and rownum = 1
?を使用してルート フォルダを取得するには
ありがとう!