2012-11-09 45 views
1

導師有2個教學科目

Instructor 
    ------------------------------------------------------ 
    | id | firstname | lastname | subject_id | section_id | 
    ------------------------------------------------------ 
     1 John  Smith  1    1 

Subject 
    ------------- 
    | id | name | 
    ------------- 
     1 English 
     2 Math 

Section 
    ------------- 
    | id | name | 
    ------------- 
    1 Section A 

我的查詢:

SELECT ins.firstname, ins.lastname,sec.name as "Section Name", sub.name as "Subject" 
    FROM instructor as ins 
    JOIN section as sec 
    JOIN subject as sub 
    WHERE ins.section_id = sec.id AND ins.subject_id = sub.id AND ins.id =1 

結果:

firstname lastname Section Name Subject 
John Smith   Section A English 

我的問題是什麼,如果是教練約翰·史密斯還教數學學科如何我要去查詢一下?我是否需要添加新的subject_id?任何這些解決方案?

感謝,

回答

3

您可以添加用於存儲對象爲每個指導員另一個表,前

CREATE TABLE Instructor 
(
    ID INT, 
    InstructorName VARCHAR(30), 
    ..... -- other fields here 
); 

CREATE TABLE Subject 
(
    ID INT, 
    SubjectNameName VARCHAR(30), 
    ..... -- other fields here 
); 

CREATE TABLE INSTRUCTOR_SUBJECT 
(
    RecID INT, 
    InstructorID INT, 
    SubjectID INT, 
    CONSTRAINT tc_pk PRIMARY KEY (RecID), 
    CONSTRAINT tc_fk1 FOREIGN KEY (InstructorID) REFERENCES Instructor(ID), 
    CONSTRAINT tc_fk2 FOREIGN KEY (SubjectID) REFERENCES Subject(ID) 
); 
0

是1到你現在有什麼多種關係,教師只能有一個主體,但任何主體都可以有多個教師。你想要一個多對多的關係,這意味着只添加一個新表格,只有instructor_idsubject_id