1

テーブル

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 を追加する必要がありますか? これらの解決策はありますか?

ありがとう、

4

2 に答える 2

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)
);
于 2012-11-09T08:02:24.553 に答える
0

これで 1 対多の関係になり、インストラクターは 1 つのサブジェクトのみを持つことができますが、どのサブジェクトも複数のインストラクターを持つことができます。instructor_idと のみを含む新しいテーブルを追加することを意味する多対多の関係が必要ですsubject_id

于 2012-11-09T08:02:33.613 に答える