2011-08-29 125 views
0

我有一個MS Access中有4列的表,它們都包含一個ID,它是另一個表中的主鍵,我想知道是否有另一種方法要做到這一點,如果沒有,我怎麼能得到Access讓我加入這些沒有錯誤,它不能告訴我想加入。幾乎所有這些ID都是學生表的一部分,他們包含了他們的主管的ID,並且有4個塊,我需要能夠跟蹤每個主管每個塊的學生。有多個外鍵到同一個表的MS Access Table

監事表:

CREATE TABLE supervisors 
(id NUMBER primary key 
, last_name TEXT 
, first_name TEXT 
, mi TEXT 
, m_number TEXT 
, email HYPERLINK 
, status TEXT 
, notes MEMO 
) ; 

學生表:

CREATE TABLE students 
(id NUMBER primary key 
, last_name TEXT 
, first_name TEXT 
, mi TEXT 
, m_number TEXT 
, email HYPERLINK 
, blk1_supervisor_id NUMBER 
, blk2_supervisor_id NUMBER 
, blk3_supervisor_id NUMBER 
, blk4_supervisor_id NUMBER 
) ; 

我不能得到它讓我做BLK1,2,3,4場外鍵主管表更不用說同時說blk1_supervisor_id和blk2_supervisor_id。

+2

請發表您的表與列名稱的描述。謝謝 – PaulStock

+0

有沒有另外一種方法來做什麼?你的問題對我來說不是很清楚,請澄清你的問題... – ain

回答

0

你可以把你的監事表,因爲它是現在,有一個只有真正的學生性質的學生表(到電子郵件)。然後創建一個StudentsSupervisor關係表:

CREATE TABLE StudentsSupervisors 
(StudentId NUMBER 
    SupervisorId Number) 

其中兩個字段構成PK。如果您需要進一步確定這種關係,您可以將blockNumber添加到該表中,並且如果同一個SuperVisor可以在不同的塊中兩次鏈接到相同的學生,那麼最終將它包括在PK中。

+0

真棒謝謝你!這是我需要知道的,是的,我將不得不添加塊號,因爲同一個主管可以在不同的塊中多次鏈接到同一個學生。 –

1

不知道你的表架構,這是我能爲你做最好...

SELECT SV.Name, S.Name, SB.Block 
FROM Students as S 

    INNER JOIN Student_Blocks AS SB 
    ON S.StudentID = SB.StudentID 

    INNER JOIN Supervisors AS SV 
    ON SB.Block1SupervisorID = SV.SupervisorID 
    AND SB.Block2SupervisorID = SV.SupervisorID 
    AND SB.Block3SupervisorID = SV.SupervisorID 
    AND SB.Block4SupervisorID = SV.SupervisorID 

ORDER BY SB.Block 
+0

謝謝我得到了這個與我們的舊數據庫表一起工作。 –