Oracle 10g - 使用不同的用户权限链接两个视图

时间:2012-01-19 17:14:59

标签: sql database oracle view

我是新手,所以如果我不完全清楚,我会道歉......

背景:
十名工作人员,均为Teacher分配了角色。

StaffDetails表有6列 - StaffIDStaffNameDateOfBirthGenderHolidayDaysRemaining& StaffRole

我希望老师看到所有他们自己的详细信息,但只能看到其他<的<{1}},StaffIDStaffName列/ strong>员工。

我已经拥有的代码解释如下:

首先,该视图显示了所有工作人员可以看到的三列(StaffRoleStaffIDStaffName):

StaffRole

其次,一个包含CREATE VIEW StaffDetailsForStaffMutual AS SELECT sd.StaffID, sd.StaffName, sd.StaffRole FROM StaffDetails sd; DateOfBirthGender列的视图。 这些只能由登录的人查看(如子查询所示)。仅包含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的数据而没有其他人的数据!)

1 个答案:

答案 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;