gpt4 book ai didi

SQL双主键,多对多关系

转载 作者:行者123 更新时间:2023-12-04 14:04:13 29 4
gpt4 key购买 nike

我想连接 3 个表。在其中一个中,我必须使用复合主键。我知道,如何处理单例。我有以下表格要连接:

CREATE TABLE Med_list
(
ID_med_list INT IDENTITY(200001,1) ,
No_med_list INT,
ID_med INT REFERENCES Med(ID_med),

PRIMARY KEY(ID_med_list, No_med_list)
)

CREATE TABLE Med
(
ID_med INT IDENTITY(3001,1) PRIMARY KEY ,
Name VARCHAR(20)
)

CREATE TABLE Visit
(
ID_Visit INT IDENTITY(600001,1) PRIMARY KEY,
ID_patient INT REFERENCES Patients(ID_patient),
Visit_date Datetime,
ID_med_duty INT,
No_med_list INT
)

我希望每位患者在一次就诊期间可以服用不止一种药物。我不知道如何以 SQL Server 可接受的方式连接表 VisitMed_list。预先感谢您的每一个提示或帮助:)

最佳答案

你需要一个多对多的关系,如果 Med_list 应该是这种关系(药物到访问)那么你只缺少一个指向访问的外键所以表关系看起来像这样

病人。 <--- 访问。 <--- 医疗 list 。 ---> 药物

像这样的表格:

CREATE TABLE Med_list
(
ID_med_list INT IDENTITY(200001,1) ,
No_med_list INT,
ID_med INT REFERENCES Med(ID_med),
ID_Visit INT REFERENCES Visit(ID_Visit)
PRIMARY KEY(ID_med_list, No_med_list)
)

CREATE TABLE Med
(
ID_med INT IDENTITY(3001,1) PRIMARY KEY ,
Name VARCHAR(20)
)

CREATE TABLE Visit
(
ID_Visit INT IDENTITY(600001,1) PRIMARY KEY,
ID_patient INT REFERENCES Patients(ID_patient),
Visit_date Datetime,
ID_med_duty INT,
No_med_list INT
)

你的查询看起来像这样

Select * From patients p
Join Visit v on v.ID_Patient = p.ID_Patient
Join Med_list ml on ml.ID_Visit = v.ID_Visit
Join Med m on m.ID_med = ml.ID_med

关于SQL双主键,多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35113906/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com