Могу ли я сослаться на таблицу в виде из хранимой процедуры? - PullRequest
0 голосов
/ 26 февраля 2010

Я создал представление для 3 таблиц в моей базе данных, они выглядят следующим образом:

Activity

ActivityRole

aspnet_UsersInRoles

Я пытаюсь получить сочетание того, что есть в Activity и ActivityRole, если переданный мной UserId является членом роли, указанной в соответствии с требованиями в Activity Role.

Я создаю представление, потому что хочу создать объект вне представления, которое называется Activity, в котором есть поля из Activity и ActivityRole.

Моей первой попыткой было создать представление, что INNER СОЕДИНЯЕТ Activity с ActivityRole и ActivityRole к UserRoles в Activity.ActivityId = ActivityRole.ActivityId и ActivityRole.RoleId = aspnet_UsersInRoles.RoleId

Теперь я хочу получать записи только по идентификатору пользователя, расположенному в таблице aspnet_User_UserRoles.

Я склонен написать хранимую процедуру, которая выполняет:

SELECT * From MyView WHERE aspnet_UsersInRoles.UserID = @UserID

Однако я не могу ссылаться на таблицу aspnet_UsersInRoles в представлении через хранимую процедуру.

Мой подход совершенно неправильный?

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 26 февраля 2010

Вы должны смотреть на вид, как на таблицу, на что-то со строками и столбцами. Снаружи вы видите только столбцы, которые вы определили в представлении, а не базовые столбцы из таблиц, из которых вы создали представление. Так что в вашем случае MyView не имеет столбца с именем aspnet_UsersInRoles.UserId.

Чтобы иметь возможность запрашивать этот столбец, вы должны включить его в свой обзор. Тогда вы можете сделать что-то вроде:

SELECT * FROM MyView v WHERE v.UserId = @UserId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...