2010-11-23 2 views
1

각 직원 종속 테이블의 모든 레코드를 표시하는보기를 작성해야하며 모든 직원의 참여 ​​날짜도 표시해야합니다. 표. 다음 코드를 사용했지만 실행하려고하면 오류가 발생합니다.두 개 이상의 테이블에서 레코드를 표시하기위한 뷰 만들기

CREATE VIEW EmpDependent 
AS 
SELECT JoinDate 
FROM Lecturer,BranchManager,NonAcademicStaff 
INNER JOIN LecDependent.EmpRegNo=Lecturer.EmpRegNo=BranchManager.EmpRegNo=NonAcademicStaff.EmpRegNo 

+1

무엇이 오류입니까? –

+0

'select' 문은 그 자체로 실행될 때 찾고있는 것을 반환합니까? – chezy525

+0

in from you - lecdepedent - –

답변

1

당신의 구문이 올바르지 않습니다 참여 도와주세요. 일반적으로, 다음을 수행해야합니다 B 두 테이블 A에 가입하기 :

select a.*, b.* 
from A a inner join B b on b.a_id = a.id 

해당 테이블 Aid 및 테이블 B라는 열이 주신 (외래 키있는 가능성이 바람직) a_id라는 이름의 열 .

당신은, 내부는 등 조인만큼 추가 할 수 있습니다 예를 들어 당신이 위의 확장 할 수 있습니다 : 당신은 당신이 기대하는 행을 반환하는 select 문을 작성하면

inner join C on c.b_id = b.id 

, 당신은 기반 뷰를 만들 수 있습니다 그 성명서.

1

당신은 같은 것을 사용해야합니다

CREATE VIEW EmpDependent AS 
    SELECT N.JoinDate 
     FROM Lecturer   AS L 
     JOIN BranchManager AS B ON L.EmpRegNo = B.EmpRegNo 
     JOIN NonAcademicStaff AS N ON B.EmpRegNo = N.EmpRegNo 

그러나, 쿼리가 FROM 절에 언급되지 않은 테이블 LecDependent을 나열하고 강사도 아닌 교직원 이유는 분명하지 않다 회원 및 지사 (그리고 아마도 강사는 그들 자신의 부양 가족이기도합니다).

또한 어떤 테이블에 JoinDate 열이 있는지 표시하지 않았습니다. NonAcademicStaff를 추측했으나 그 중 하나 일 수 있습니다. 그리고 다수의 필터 조건없이 단일 컬럼에 3 테이블 조인 (또는 4 테이블 조인)이 필요하지는 않습니다.

전반적으로보기에서 캡슐화하는 쿼리에 대해 깊이 생각해야합니다.

+0

실제로 각 테이블, Lecturer, BranchManager 및 NonAcademicStaff는 JoinDate 열로 구성됩니다. 종속은 또한 LecDependent, BrManDependent 및 NonAcDependent와 유사합니다. 따라서 결과는 모든 종속적 인 세부 사항과 JoinDate가되어야합니다. – Yoosuf

+0

@Yoosuf : 그래서보기로 표시 할 내용은 무엇입니까? 각 테이블의 윤곽은 무엇입니까? 마지막으로 언급 한 내용을 다시 강조합니다. '캡슐화하는 쿼리에 대해 열심히 생각해 봐야합니다.' 실제로보기에서 캡슐화하기 전에 좋은 작업 쿼리가 필요합니다. –

+0

뷰에는 각 직원 (강사, branchManager 및 NonAcademicStaff)의 JoinDate와 각 종속 정보 모두가 표시되어야합니다. – Yoosuf

관련 문제