创建视图以显示来自两个以上表的记录

时间:2010-11-23 15:23:17

标签: sql view join

我需要创建一个视图来显示每个员工相关表中的所有记录,并且还应该显示每个员工的加入日期以及该特定员工的表。我使用了以下代码,但在尝试运行它时显示错误。

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

请帮忙

2 个答案:

答案 0 :(得分: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 :(得分: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个表连接)。

总的来说,您需要仔细考虑要在视图中封装的查询。