我需要创建一个视图来显示每个员工相关表中的所有记录,并且还应该显示每个员工的加入日期以及该特定员工的表。我使用了以下代码,但在尝试运行它时显示错误。
CREATE VIEW EmpDependent
AS
SELECT JoinDate
FROM Lecturer,BranchManager,NonAcademicStaff
INNER JOIN LecDependent.EmpRegNo=Lecturer.EmpRegNo=BranchManager.EmpRegNo=NonAcademicStaff.EmpRegNo
请帮忙
答案 0 :(得分:1)
您的联接语法不正确。通常,要加入两个表A
和B
,您必须执行以下操作:
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个表连接)。
总的来说,您需要仔细考虑要在视图中封装的查询。