2010-11-23 63 views
1

我需要创建一个视图以显示来自每个员工依赖表的所有记录,并且还应该显示每个员工的连接日期以及该特定员工的连接日期表。我使用了下面的代码,但是当我尝试运行它时显示错误。创建视图以显示来自两个以上表格的记录

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

请帮

+1

什么是错误? – 2010-11-23 15:24:40

+0

这个`select`语句在运行时是否返回所需内容? – chezy525 2010-11-23 15:27:23

回答

1

你的加入语法不正确。一般情况下,加入两个表AB你就必须做到以下几点:

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

鉴于表A有一个名为id和表B列有一个名为a_id(可能,最好是一个外键)列。

您可以添加尽可能多的内部连接像,例如,你可以扩展上面:

inner join C on c.b_id = b.id 

一旦你创建了select语句返回你所期望的行,您可以创建基于视图该声明。

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个表连接)。总体而言,您需要认真思考您在视图中封装的查询。

相关问题