Создание представления для отображения записей из более чем двух таблиц - PullRequest
1 голос
/ 23 ноября 2010

Мне нужно создать представление для отображения всех записей из каждой зависимой от сотрудника таблицы, а также в нем должна отображаться дата объединения каждого сотрудника, а также из таблицы этого конкретного сотрудника.Я использовал следующий код, но он показывает ошибку при попытке его запустить.

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

Пожалуйста, помогите

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

Вам нужно использовать что-то вроде:

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

Однако в вашем запросе указана таблица LecDependent, которая не упоминается в предложении FROM, и неясно, почему лектор также является неакадемическим сотрудником и менеджером филиала (и, возможно, лектор также является их собственной зависимой ).

Вы также не указали, в какой таблице содержится столбец JoinDate - я предположил NonAcademicStaff, но это может быть любой из них. И вам вряд ли понадобится объединение в 3 таблицы (или объединение в 4 таблицы) для одного столбца без ряда условий фильтрации.

В целом, вам необходимо тщательно продумать запрос, который вы инкапсулируете в представление.

1 голос
/ 23 ноября 2010

Ваш синтаксис соединения неверен.Как правило, для объединения двух таблиц 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, который возвращает ожидаемые строки, вы можете создать представление на основе этого оператора.

...