Clé primaire double SQL, relation plusieurs-à-plusieurs

J'aimerais connecter 3 tables. Dans l'un d'eux, je dois utiliser une key primaire composée. Je sais, comment faire face à célibataire. J'ai les tables suivantes pour se connecter:

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 ) 

Je voudrais que chaque patient puisse avoir plus d'un médicament pendant une visite. Je ne sais pas comment connecter la table Visit et Med_list la manière acceptable pour SQL Server. Merci d'avance pour chaque indice ou aide 🙂

Vous avez besoin d'une relation de plusieurs à plusieurs, si Med_list est supposé être cette relation (médecine aux visites) alors il vous manque seulement une key étrangère qui pointe vers la visite donc la relation des tables ressemble à ceci

Patient. <— Visitez. <— Med_list. —> Meds

Les arrays aiment ça:

 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 ) 

Et votre requête peut ressembler à ceci

 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 

Tu pourrais essayer ça

Je suis également nouveau dans la requête de relation many-to-many.

Exemple SQLFiddle

 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