次のサンプルデータを使用して、SQLServerで再帰CTEを実行しようとしています
Class Student
------ ------
English Sally <- Sally is what were searching for
English Peter <- Peter's on same Class as Sally
Swedish Peter <- Found because Peter's on this class
Dutch Peter <- Found because Peter's on this class
Finnish Harry <- Not found, no relation to class or student
Swedish Tim <- Found because Peter's on Swedish class
Spanish Lauren <- Not found, no relation to class or student
Spanish Colin <- Not found, no relation to class or student
したがって、パラメータとして「Sally」を指定するCTEが必要です。これにより、Sallyに関連するすべての異なるクラス、Sallyが属するクラスに関連するすべての学生、同じクラスの学生に関連するすべてのクラスが検出されます。サリーなど、行がなくなるまで続けます。
しかし、結合の書き方がわかりません。これは私が試したものですが、惨めに失敗しました。
WITH myCTE (Class, Student) AS
(
SELECT Class, Student FROM TABLE1 WHERE TABLE1.Student= 'Sally'
UNION ALL
SELECT t.Class, t.Student FROM TABLE1 t
JOIN myCTE t2 ON t2.Class = t.Class
)
SELECT * FROM myCTE