首页 > 解决方案 > 如何连接具有多对多关系的表

问题描述

我正在尝试将四个表连接在一起,一个表是一个连接表,因为其中两个表具有多对多关系:

ER图

从用户中选择 DispalyName、从角色中选择名称和描述以及从权限中选择权限和描述的查询是什么。

我知道如何将两个表连接在一起,但我这样做的方法不适用于这个问题。

我尝试了以下查询,但似乎不喜欢它。

SELECT org.[User].[DisplayName], org.[Role].[Description], org.[Permission].[Description]
FROM org.[Role] rolee
JOIN org.[RolePermissions] rolePerms ON rolee.ID = rolePerms.RoleId 
JOIN org.[Permission] perms ON rolePerms.PermissionId = perms.ID
WHERE [User].[email] LIKE '%myemail%'

标签: sqlsql-server

解决方案


试试这个 - 似乎您忘记加入用户表

SELECT org.[User].[DisplayName], org.[Role].[Description], org.[Permission].[Description]
FROM org.[User] user Join org.[Role] rolee on user.RoleID = rolee.ID
JOIN org.[RolePermissions] rolePerms ON rolee.ID = rolePerms.RoleId 
JOIN org.[Permission] perms ON rolePerms.PermissionId = perms.ID
WHERE org.[User].[email] LIKE '%myemail%'

推荐阅读