これは次の質問から派生したものです: 2 つの結果セット間の重複を除外する
その質問のコメントのように、Oracle の特別な「CONNECT BY」構文を使用してクエリを実装しようとしています。私の場合、構文を実装する方法に関する(明確な)情報を見つけるのに苦労しています。
私のクエリ:
SELECT pi.compressed_name, pi.phn, to_char(pi.date_of_birth , 'YYYY/MM/DD') as date_of_birth,
to_char(pe.started_on , 'YYYY/MM/DD' ) as medicare_eligibility_start,
to_char(pe.ended_on , 'YYYY/MM/DD' ) as medicare_eligibility_end
FROM medcrtr.forest_node fnpppp,
medcrtr.forest_node fnppp,
medcrtr.forest_node fnpp,
medcrtr.forest_node fnp,
medcrtr.forest_node fn,
medcrtr.group_member gm,
medcrtr.program_eligibility pe,
person_index pi
WHERE gm.entity_type_id = 1
AND fn.source_id = gm.group_id
AND fn.entity_type_id = 3
AND fnp.id = fn.parent_id
AND fnpp.id = fnp.parent_id
AND fnppp.id = fnpp.parent_id
AND fnpppp.id = fnppp.parent_id
AND pe.person_id = gm.source_id
AND pe.sub_program_id = fnpp.parent_id
AND pi.person_id = gm.source_id
AND fnppp.id = 1169
AND (gm.ended_on >= SYSDATE OR gm.ended_on IS NULL)
誰かが私を正しい方向に向けて、別の構文に変換することができますか?
私は次のようなことを考えています:
SELECT pi.compressed_name, pi.phn, to_char(pi.date_of_birth , 'YYYY/MM/DD') as date_of_birth,
to_char(pe.started_on , 'YYYY/MM/DD' ) as medicare_eligibility_start,
to_char(pe.ended_on , 'YYYY/MM/DD' ) as medicare_eligibility_end
FROM medcrtr.forest_node fn,
group_member gm,
program_eligibility pe,
person_index pi
WHERE gm.entity_type_id = 1
AND fn.source_id = gm.group_id
AND fn.entity_type_id = 3
AND pe.person_id = gm.source_id
--AND pe.sub_program_id = fnpp.parent_id ???
AND pi.person_id = gm.source_id
--AND fnppp.id = 1169 ???
AND (gm.ended_on >= SYSDATE OR gm.ended_on IS NULL)
CONNECT BY PRIOR fn.id=fn.parent_id
これは明らかに機能しておらず、fnpp の機能を統合する方法がわかりません... まだ.何か助けはありますか?