SQLを実際に試して変換する必要はありません。質問を反映すると、RAソリューションも得られます。
「同じ日に同じ専門の2人の異なる医師を訪問した患者を見つけてください」
まず、患者、訪問、医師を組み合わせます
Patients x Visits x Doctors
2回の訪問と2人の医師がいるため、VisitsとDoctorsのテーブルの別のインスタンスが必要です。それらをそのまま使用することはできません。そうしないと、それらを区別できなくなります。したがって、名前を変更し\rho
ます。
Patients x \rho_V1(Visits) x \rho_D1(Doctors) x \rho_V2(Visits) x \rho_D2(Doctors)
次に、「一致する」組み合わせを選択する必要があります
\sigma_{Patients.pid = V1.pid /\
Patients.pid = V2.pid /\
V1.date = V2.date /\
V1.did = D1.did /\
V2.did = D2.did /\
D1.did != D2.did /\
D1.speciality = D2.speciality}
(Patients x \rho_V1(Visits) x \rho_D1(Doctors) x
\rho_V2(Visits) x \rho_D2(Doctors))
次に、患者を見つける必要があります。pid
\pi_{Patients.pid}
(\sigma_{Patients.pid = V1.pid /\
Patients.pid = V2.pid /\
V1.date = V2.date /\
V1.did = D1.did /\
V2.did = D2.did /\
D1.did != D2.did /\
D1.speciality = D2.speciality}
(Patients x \rho_V1(Visits) x \rho_D1(Doctors) x
\rho_V2(Visits) x \rho_D2(Doctors)))
このようにして、同じ専門分野の少なくとも2人の異なる医師を同じ日に訪問した患者を見つけました。正確に2人の医師を訪問した患者を見つける必要がある場合は、正確に2 =少なくとも2-少なくとも3、つまり、
\pi_{Patients.pid}
(\sigma_{Patients.pid = V1.pid /\
Patients.pid = V2.pid /\
V1.date = V2.date /\
V1.did = D1.did /\
V2.did = D2.did /\
D1.did != D2.did /\
D1.speciality = D2.speciality}
(Patients x \rho_V1(Visits) x \rho_D1(Doctors) x
\rho_V2(Visits) x \rho_D2(Doctors)))
-
\pi_{Patients.pid}
(\sigma_{Patients.pid = V1.pid /\
Patients.pid = V2.pid /\
Paitents.pid = V3.pid /\
V1.date = V2.date /\
V2.date = V3.date /\
V1.did = D1.did /\
V2.did = D2.did /\
V3.did = D3.did /\
D1.did != D2.did /\
D1.did != D3.did /\
D2.did != D3.did /\
D1.speciality = D2.speciality /\
D2.speciality = D3.speciality}
(Patients x \rho_V1(Visits) x \rho_D1(Doctors) x
\rho_V2(Visits) x \rho_D2(Doctors) x
\rho_V3(Visits) x \rho_D3(Doctors) ))