我在我的数据库中创建了一个关于3个表的视图,它们如下:
Activity
ActivityRole
aspnet_UsersInRoles
我试图抓住Activity和ActivityRole中的内容的组合,如果我传入的UserId是活动角色中指定的角色的成员。
我正在创建一个视图,因为我想生成一个名为Activity的视图对象,该对象包含来自Activity和ActivityRole的字段。
我的第一次尝试是在Activity.ActivityId = ActivityRole.ActivityId和ActivityRole.RoleId = aspnet_UsersInRoles.RoleId
上创建INNER JOINED Activity to ActivityRole和ActivityRole to UserRoles的视图现在我想只通过位于aspnet_User_UserRoles表中的UserId拉回记录。
我倾向于编写一个存储过程:
SELECT * From MyView WHERE aspnet_UsersInRoles.UserID = @UserID
但是我无法通过存储过程在视图中引用aspnet_UsersInRoles表。
我的方法完全错了吗?
感谢您的帮助。
答案 0 :(得分:2)
当您查看表格时,您应该查看视图,包括行和列。从外部可以看到您在视图中定义的列,而不是您创建视图的表中的基础列。因此,在您的情况下,MyView
没有名为aspnet_UsersInRoles.UserId
的列。
为了能够在此列上进行查询,您应该将其包含在视图中。然后你可以做类似的事情:
SELECT * FROM MyView v WHERE v.UserId = @UserId