with closure (obj_1, obj_2) as (
SELECT distinct t.obj_1, t.obj_2
FROM temp4 t
UNION ALL
SELECT c.obj_1, t.obj_2
FROM closure c, temp4 t
WHERE c.obj_2=t.obj_1)
SELECT * FROM closure
データにサイクルがあるため、これは無限に実行されます。このステートメントに停止条件を追加する方法があるので、行がすでにクロージャーに存在する場合、その行に対して再帰を停止します。再帰SQLの停止条件の設定方法は?
のようなものをクエリヘルパーを構築することです訪問されたオブジェクトの追跡を行い、その情報を使用して処理を停止する。 –
@GordonLinoffこれを説明する例や文書を参考にすることができますか?私は完全にこれに新しいですし、私が試してみることができる何かを見て素晴らしいです。 – Nataly
。 。私はこれをSQL Serverで行いましたが、DB2では行っていません。 1つのアイデアは、オブジェクトIDを文字列(および他の列)に保持し、IDが使用されていないことを確認することです。 –