我想连接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可接受的方式连接表Visit
和Med_list
。
提前感谢您的每一个提示或帮助:)
答案 0 :(得分:1)
你需要多对多关系,如果Med_list应该是这种关系(医学访问)那么你只缺少一个指向访问的外键,所以表关系看起来像这样
患者。 < ---访问。 < --- Med_list。 --->吃药
这样的表格:
javac nameOfTheClass.java
java nameOfTheClass
您的查询可能如下所示
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
)
答案 1 :(得分:0)
你可以试试这个
我也是多对多关系查询的新手。
<强> SQLFiddle Example 强>
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