虽然我不知道您对最终结果的确切要求,但下面的查询和解释可能有助于解决您的问题。拥有额外的样本数据和您想要的结果样本会有所帮助,但这是我的尝试。
我从一个较小的查询开始,并设法添加表。第一个查询,这不会为您提供大量数据,但会为您提供ChildMID
,MedicalId
和Station
最终产品。你需要ChildMID
andMedicalId
来加入更多的表。(SQL 小提琴):
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
表格。在这里,我做了一些稍微不同的事情,因为我在两个单独的字段上加入了表格。对于这个查询,我加入了两个SMID
字段以验证研究是否正确,但我也加入了MedicalID
字段以确保它使用了正确的医疗记录。(请参阅SQL Fiddle)如果您不在两个字段上加入,那么您将获得每个项目的一条记录,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
表之前提供的示例数据,您有一条记录,但最后有 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
我认为这会产生您正在寻找的结果。