为了检索UserId的所有项目,或者如果用户是admin,则检索全部项目,我想加入多个表。我正在对MSSQL的belongs_to :parent
查询中使用该语句。
TableAdapter
为了适用于表适配器的相当静态的方法,我从项目开始。
获取所有项目,并通过FK解决SELECT P.ID, P.CountryID, P.ProjectYear, P.Name, P.Objective, P.StartDate, P.EndDate, P.BaseCampaign, P.ManagerID, P.IsClosed, P.OrganisationUnitID, P.QualitativeZiele, P.QuantitativeZiele,
P.Herausforderungen, P.Learnings, P.ObjectiveQuantitativ, P.Remarks, P.ProjectOverallID, C.Name AS CountryName, O.Name AS OEName, R.RoleName
FROM wc_Projects AS P
INNER JOIN wc_OrganisationUnit AS O ON P.OrganisationUnitID = O.ID
INNER JOIN wc_Countries AS C ON P.CountryID = C.ID
INNER JOIN aspnet_Roles AS R ON C.ID = R.CountryID
INNER JOIN aspnet_UsersInRoles AS UR ON R.RoleId = UR.RoleId
WHERE (@ViewAll = 1) OR (UR.UserId = @UserId)
ORDER BY P.CountryID, P.OrganisationUnitID, P.ProjectYear DESC
和CountryName
。现在看看是否可以找到与该国家相关的角色。然后找到附加到该角色的用户。
我知道这是一个糟糕的查询,但这是唯一适用于OEName
处理方式的查询。
当我有一个WebForms TableAdapter
且具有与一个国家/地区相关的一个或多个角色时,它就起作用了。如果是管理员用户,则该用户与关联的国家/地区没有任何角色,但UserId
会中断。我收到约束异常,结果数量几乎翻了三倍。
我尝试重写查询,添加括号和不同的联接。但是没有一个有效。我该怎么解决?