我是新手,所以如果我不完全清楚,我会道歉......
背景:
十名工作人员,均为Teacher
分配了角色。
StaffDetails
表有6列 - StaffID
,StaffName
,DateOfBirth
,Gender
,HolidayDaysRemaining
& StaffRole
我希望老师看到所有他们自己的详细信息,但只能看到其他<的<{1}},StaffID
和StaffName
列/ strong>员工。
我已经拥有的代码解释如下:
首先,该视图显示了所有工作人员可以看到的三列(StaffRole
,StaffID
,StaffName
):
StaffRole
其次,一个包含CREATE VIEW StaffDetailsForStaffMutual AS
SELECT sd.StaffID, sd.StaffName, sd.StaffRole
FROM StaffDetails sd;
,DateOfBirth
和Gender
列的视图。 这些只能由登录的人查看(如子查询所示)。仅包含HolidayDaysRemaining
属性,以便在两个视图中都有一个公共列 - 它在最终表中只出现一次。
StaffID
我的问题是,我找不到加入这两个视图来制作单个表的方法。在一个完美的世界中,如果ID为301的工作人员登录并查询整个表,它将显示六列,第一行将包含所有数据,第二行将包含三列StaffID 302的数据等等等。
非常感谢任何帮助!
(最后,为了表明我已经去了,我尝试了这个问题:
CREATE VIEW StaffXDetailsForStaffX AS
SELECT sd.StaffID, sd.DateOfBirth, sd.Gender, sd.HolidayDaysRemaining
FROM StaffDetails sd
WHERE StaffID IN
(SELECT USER
FROM DUAL);
但是当以301登录并查询时,它显示仅 301的数据而没有其他人的数据!)
答案 0 :(得分:0)
您可能需要outer join
CREATE VIEW StaffDetailsForStaff AS
SELECT sdfsm.StaffID, sdfsm.StaffName, sdfsm.StaffRole,
sxdfsx.DateOfBirth, sxdfsx.Gender, sxdfsx.HolidayDaysRemaining
FROM StaffDetailsForStaffMutual sdfsm LEFT JOIN StaffXDetailsForStaffX sxdfsx
ON sdfsm.StaffID = sxdfsx.StaffID;