sách gpt4 ai đã đi

sql - 从多个表中获取数据

In lại 作者:行者123 更新时间:2023-12-01 11:00:12 hai mươi bốn 4
mua khóa gpt4 Nike

医学硕士

       MedicalID MedicalName
1(pk) abc
2 xyx
3 pqr

Child_Medical_Master

       ChildMID MedicalID Station Name
1(pk) 1(fk) bnb mfk
2 1 def rwr
3 2 re wrw

就诊

       VTID PMID RFMID age
1(pk) 2(fk) 1 34
2 2 3 45
3 3 1 45
4 1 2 44
5 2 2 76

医学研究

       UID VTID ChildMID SMID Date time 
1(pk) 1(fk) 1 1 kk jdj
2 2 3 2 kdf lfl
6 3 2 3 rgr rtr

博士_硕士

       RFMID Doctorname
1(pk) mr.john
2 mr.jack
3 mr.jim

PAtient_Master

       PMID Firstname LastNAme
1(pk) df ere
2 rwe rwer
3 rwr fwr

Study_Master

       SMID MedicalID Description Duration
1(pk) 1(fk) fdf efe
2 1 ddf dfdf
3 2 df ef

我想要表中的这些列,我的正确查询应该如何?

UID,PMID,FIRSTNAME,LASTNAME,AGE,MEDICALNAME,DESCRIPTION,STATION,DATE,DoctorName

我已经在 7 个表上使用了内部连接,但没有得到正确的数据。(Doctorname 重复)

1 Câu trả lời

虽然我不确切知道您想要的最终结果是什么,但下面的查询和解释可能有助于解决您的问题。拥有额外的示例数据和您想要的结果示例会有所帮助,但这是我的尝试。

我从一个较小的查询开始,并设法添加表。第一个查询,这不会为您提供大量数据,但会为您提供最终产品的 ChildMID,MedicalIdStation。您需要 ChildMIDMedicalId 来加入更多表。 ( SQL Fiddle ):

LỰA CHỌN *
FROM Medical_Master mm
INNER JOIN Child_medical_Master cmm
ON mm.MedicalID = cmm.MedicalId

我在下一个表中添加了 Medical_Study 表连接到 ChildMID 上,您刚刚从之前的连接中获得该表。这将为您提供最终产品 ( SQL Fiddle) 中的 UID.

LỰA CHỌN *
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 都匹配的项目.

LỰA CHỌN *
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_VisitPatient_Master。 (SQL Fiddle)

LỰA CHỌN *
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 位医生。

LỰA CHỌN *
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

我认为这会产生您正在寻找的结果。

关于sql - 从多个表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11738574/

hai mươi bốn 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com