最終結果に何を求めているのか正確にはわかりませんが、以下のクエリと説明が問題の解決に役立つ場合があります。追加のサンプル データと必要な結果のサンプルがあると役立ちますが、これが私の試みです。
私は小さなクエリから始めて、テーブルを追加することに取り組みました。最初のクエリです。これは大量のデータを取得するわけではありませんが、最終製品のChildMID
とをMedicalId
取得します。さらにテーブルを結合するには、とStation
が必要です。( SQL フィドル):ChildMID
MedicalId
SELECT *
FROM Medical_Master mm
INNER JOIN Child_medical_Master cmm
ON mm.MedicalID = cmm.MedicalId
Medical_Study
次のテーブルには、前の結合から取得したテーブル結合を追加しましたChildMID
。これによりUID
、最終製品 ( SQL Fiddle ) が得られます。
SELECT *
FROM Medical_Master mm
INNER JOIN Child_medical_Master cmm
ON mm.MedicalID = cmm.MedicalId
INNER JOIN Medical_Study ms
ON cmm.ChildMID = ms.ChildMID
次の結合では、Study_Master
テーブルを追加しました。ここでは、2 つの別々のフィールドでテーブルを結合するという点で、少し異なることを行いました。このクエリではSMID
、調査が正しいことを確認するために両方のフィールドに参加しましたMedicalID
が、正しい医療記録を使用していることを確認するためにフィールドにも参加しました。( SQL Fiddleを参照してください) 両方のフィールドで結合しない場合、 の項目ごとに 1 つのレコードが取得されますがMedical_Study
、Study と Medical の両方が一致する項目が必要なようです。
SELECT *
FROM Medical_Master mm
INNER JOIN Child_medical_Master cmm
ON mm.MedicalID = cmm.MedicalId
INNER JOIN Medical_Study ms
ON cmm.ChildMID = ms.ChildMID
INNER JOIN Study_Master sm
ON ms.SMID = sm.SMID
AND mm.MedicalID = sm.MedicalID -- results change if you remove this line
Medical_Visit
次のクエリは、とを追加するという点で、少し簡単ですPatient_Master
。( SQL フィドル)
SELECT *
FROM Medical_Master mm
INNER JOIN Child_medical_Master cmm
ON mm.MedicalID = cmm.MedicalId
INNER JOIN Medical_Study ms
ON cmm.ChildMID = ms.ChildMID
INNER JOIN Study_Master sm
ON ms.SMID = sm.SMID
AND mm.MedicalID = sm.MedicalID
INNER JOIN Medical_Visit mv
ON ms.VTID = mv.VTID
INNER JOIN Patient_Master pm
ON mv.PMID = pm.PMID
追加する最終テーブルはDoctor_Master
、医師の名前を取得するテーブルです。( SQL Fiddle ) テーブルを追加する前に提供されたサンプル データを使用すると、Doctor_Master
1 つのレコードがありますが、最終的には 3 になります。これは、PMID
ある時点で 3 人の医師全員を診察したためです。
SELECT *
FROM Medical_Master mm
INNER JOIN Child_medical_Master cmm
ON mm.MedicalID = cmm.MedicalId
INNER JOIN Medical_Study ms
ON cmm.ChildMID = ms.ChildMID
INNER JOIN Study_Master sm
ON ms.SMID = sm.SMID
AND mm.MedicalID = sm.MedicalID
INNER JOIN Medical_Visit mv
ON ms.VTID = mv.VTID
INNER JOIN Patient_Master pm
ON mv.PMID = pm.PMID
INNER JOIN Doctor_Master dm
ON mv.RFMID = dm.RFMID
最終的なクエリで不要なフィールドをすべて削除すると、次のようになります。
SELECT ms.UID,
pm.PMID,
pm.firstname,
pm.lastname,
mv.age,
mm.medicalname,
sm.description,
cmm.station,
ms.[date],
dm.doctorname
FROM Medical_Master mm
INNER JOIN Child_medical_Master cmm
ON mm.MedicalID = cmm.MedicalId
INNER JOIN Medical_Study ms
ON cmm.ChildMID = ms.ChildMID
INNER JOIN Study_Master sm
ON ms.SMID = sm.SMID
AND mm.MedicalID = sm.MedicalID
INNER JOIN Medical_Visit mv
ON ms.VTID = mv.VTID
INNER JOIN Patient_Master pm
ON mv.PMID = pm.PMID
INNER JOIN Doctor_Master dm
ON mv.RFMID = dm.RFMID
これはあなたが探している結果を生み出すと思います。