连接多个表会产生重复

时间:2019-11-15 08:59:58

标签: sql-server select inner-join multiple-tables tableadapter

为了检索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会中断。我收到约束异常,结果数量几乎翻了三倍。
我尝试重写查询,添加括号和不同的联接。但是没有一个有效。我该怎么解决?

0 个答案:

没有答案