You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何获取DotNetNuke角色的SQL查询返回错误值?

修正DotNetNuke角色查询的SQL语句

你的SQL查询返回不正确结果,大概率是表连接和筛选条件的逻辑出了问题,咱们来一步步梳理并修正:

问题出在哪?

  • 表关联条件错配:你把UserRoles.UserID和UserPortals.UserPortalId做了关联,但DotNetNuke的UserPortals表里,UserPortalId是这个表的主键ID,真正关联用户ID的字段是UserId,这直接导致关联逻辑完全错误。
  • 筛选条件冗余且偏离目标:WHERE里的userportals.UserPortalId = 1是在筛选UserPortals表的主键,不是你要查询的用户ID;后面的子查询IN (SELECT RoleID FROM UserRoles WHERE UserID = 1)也完全没必要,主查询已经关联了UserRoles,直接筛选用户ID就行。

修正后的查询语句

SELECT 
    1 AS 'CurrentUserID',
    UserPortals.UserId AS PassedUserId, -- 换成正确的用户ID字段
    UserPortals.PortalId,
    Roles.RoleID,
    Roles.RoleName,
    UserRoles.ExpiryDate,
    UserRoles.LastModifiedOnDate
FROM UserRoles
INNER JOIN Roles ON Roles.RoleID = UserRoles.RoleID
INNER JOIN UserPortals ON UserRoles.UserID = UserPortals.UserId -- 修正关联条件
WHERE UserPortals.UserId = 1 -- 直接指定要查询的用户ID

额外提示

如果需要限定只查询某个特定门户下的角色,只要在WHERE子句里加一句AND UserPortals.PortalId = [你的目标门户ID]就行;要是CurrentUserID需要动态获取当前登录用户,你可以根据执行环境换成对应的参数(比如DotNetNuke里常用的@CurrentUserId)。

内容的提问来源于stack exchange,提问作者jtmaher2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:11:23