2011-08-29 5 views
0

4 개의 열이있는 MS Access의 테이블이 있고 다른 테이블의 기본 키인 ID가 모두 들어 있으며 다른 방법이 있는지 알고 싶습니다. 이 작업을 수행하고 어떻게 액세스 할 수 없으면 오류없이 이러한 작업에 참여할 수 있습니다. 내가 참여하려고 시도하고있는 것을 말할 수 없습니다. 꽤 많은이 이드는 학생 테이블의 일부이고 그 블럭에 대한 관리자의 ID를 포함하고 있으며 4 개의 블럭이 있으며 각 블럭에 대해 각 수퍼바이저가 가진 것을 추적 할 수 있어야합니다.동일한 테이블에 여러 개의 외래 키가있는 MS 액세스 테이블

관리자 테이블 :

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를 동일한 Student에 다른 블록으로 두 번 연결할 수 있으면 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

고맙습니다. 이전 데이터베이스 테이블을 사용해 보았습니다. –