SQL双主键,多对多关系
我想连接3张桌子。在其中一个中,我必须使用复合主键。我知道,如何处理单身。我要连接以下表格:SQL双主键,多对多关系,sql,sql-server,Sql,Sql Server,我想连接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
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可以接受的方式连接tableVisit
和Med\u list
。
提前感谢您的每一个提示或帮助:)您需要一个多对多关系,如果Med_list应该是这个关系(medicine to Visites),那么您只缺少一个指向访问的外键,因此tables关系如下所示
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
耐心 你可以试试这个
我也是多对多关系查询的新手
SELECT
P.name,
M.Name
FROM
med_list ML
LEFT JOIN med M ON m.ID_med=ML.ID_med
LEFT JOIN visit V ON V.ID_Visit=ML.ID_Visit
LEFT JOIN patients P ON P.ID_patient=V.ID_patient
我不应该更改代码中的任何内容吗?这只是一切的一部分。是的,我编辑了我的回复,可能有一些列你不需要,但是因为我不知道整个数据库结构,所以我把它们放在那里了。Med_list的目的是什么。No_Med_list?该表在ID\u med\u列表中是唯一的,所以我认为您的主键太松了。
SELECT
P.name,
M.Name
FROM
med_list ML
LEFT JOIN med M ON m.ID_med=ML.ID_med
LEFT JOIN visit V ON V.ID_Visit=ML.ID_Visit
LEFT JOIN patients P ON P.ID_patient=V.ID_patient