Я новичок в этом, поэтому я прошу прощения, если мне не совсем ясно ...
Справочная информация:
Десять сотрудников, все с назначенной им ролью Teacher
.
Таблица StaffDetails
имеет 6 столбцов - StaffID
, StaffName
, DateOfBirth
, Gender
, HolidayDaysRemaining
& StaffRole
Я хотел бы, чтобы учителя увидели все свои данные, но только столбцы StaffID
, StaffName
и StaffRole
из других сотрудников.
Код, который у меня уже есть, поясняется ниже:
Во-первых, представление, которое показывает три столбца, которые могут видеть все сотрудники (StaffID
, StaffName
, StaffRole
):
CREATE VIEW StaffDetailsForStaffMutual AS
SELECT sd.StaffID, sd.StaffName, sd.StaffRole
FROM StaffDetails sd;
Во-вторых, представление, которое будет содержать столбцы DateOfBirth
, Gender
и HolidayDaysRemaining
. Эти будут доступны для просмотра только зарегистрированному пользователю (как показано подзапросом).Атрибут StaffID
включен только для того, чтобы общий столбец был в обоих представлениях - он будет присутствовать только один раз в финальной таблице.
CREATE VIEW StaffXDetailsForStaffX AS
SELECT sd.StaffID, sd.DateOfBirth, sd.Gender, sd.HolidayDaysRemaining
FROM StaffDetails sd
WHERE StaffID IN
(SELECT USER
FROM DUAL);
Моя проблема в том, что я не могу найти способобъедините эти два представления, чтобы составить одну таблицу.В идеальном мире, если сотрудник с ID 301 вошел в систему и запросил всю таблицу, он отображал бы шесть столбцов, в первой строке были бы все данные, во второй строке было бы три столбца данных StaffID 302.и т. д. и т. п.
Любая помощь здесь будет принята с благодарностью!
(Наконец, просто чтобы показать, что у меня все получилось, я попробовал этот запрос:
CREATE VIEW StaffDetailsForStaff AS
SELECT sdfsm.StaffID, sdfsm.StaffName, sdfsm.StaffRole,
sxdfsx.DateOfBirth, sxdfsx.Gender, sxdfsx.HolidayDaysRemaining
FROM StaffDetailsForStaffMutual sdfsm, StaffXDetailsForStaffX sxdfsx
WHERE sdfsm.StaffID = sxdfsx.StaffID;
но при входе в систему как 301 и запросе он показывал только 301 данные и никто другой!)