以上是我的架构。您在 tblPatientVisits 中看不到的是来自 的外键tblPatient
,即patientid
.
tblPatient
包含数据集中每个患者的不同副本以及他们的性别。 tblPatientVists
包含他们的人口统计信息,他们在入院时住在哪里以及他们去了哪家医院。我选择将这些信息放入一个单独的表中,因为它在整个数据中都会发生变化(一个人可以从一次访问转移到下一次访问并转到另一家医院)。
在我添加 tblPatientVisits 之前,我的查询没有收到任何奇怪的数字。中只有不到一百万的索赔tblClaims
,但是当我添加tblPatientVisits
以便我可以查看那个人来自哪里时,它返回了超过一百万。我认为这是因为在tblPatientVisits
同一个患者 ID 中出现了不止一次(因为他们有不同的入院/出院日期)。
在我的一生中,我看不出这是不正确的设计,我也不知道如何纠正它,除了使用count(tblPatientVisits.PatientID=1
然后union
使用count(tblPatientVisits.patientid)>1
.
对这种类型的设计有任何见解,或者我如何更优雅地找到一种方法来获取 claimTypetblClaims
以给我正确的行数,并将索赔 ID 与患者 ID 相关联?
编辑:我遇到的最大问题是,如果我在 tblPatient 表中包含admissionDate,dischargeDate
or ,patientState
我就不能使用 patientID 作为主键。
需要注意的是,tblClaims
都NOT
必然相关tblPatientVisits.admissionDate, tblPatientVisits.dischargeDate
。
编辑:示例查询显示当添加 tblPatientVisits 时,返回的行多于声明
SELECT tblclaims.id, tblClaims.claimType
FROM tblClaims INNER JOIN
tblPatientClaims ON tblClaims.id = tblPatientClaims.id INNER JOIN
tblPatient ON tblPatientClaims.patientid = tblPatient.patientID INNER JOIN
tblPatientVisits ON tblPatient.patientID = tblPatientVisits.patientID
返回超过一百万的查询行
SELECT tblClaims.id, tblPatient.patientID
FROM tblClaims INNER JOIN
tblPatientClaims ON tblClaims.id = tblPatientClaims.id INNER JOIN
tblPatient ON tblPatientClaims.patientid = tblPatient.patientID
返回的查询行数少于一百万