Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL双主键,多对多关系_Sql_Sql Server - Fatal编程技术网

SQL双主键,多对多关系

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

我想连接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可以接受的方式连接table
Visit
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