Как объединить таблицы, имеющие отношения многие ко многим - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь объединить четыре таблицы вместе, одна таблица является объединяющей таблицей, так как две таблицы имеют отношение «многие ко многим»:

ER Diagram

Что будет запрос для выбора DispalyName из User, Name & Description из Role и Permission & Description из Permission.

Я знаю, как объединить две таблицы вместе, но мой метод не работает над этой проблемой.

Я пробовал следующий запрос, но он мне не понравился.

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%'

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Попробуйте - кажется, что вы забыли присоединиться к таблице пользователя

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%'
0 голосов
/ 04 мая 2020

Вам необходимо присоединиться к пользователю

SELECT u.[DisplayName], r.[Description], p.[Description]
FROM org.[Role] r
JOIN org.[RolePermissions] rp ON r.ID = rp.RoleId 
JOIN org.[Permission] p ON rp.PermissionId = p.ID
JOIN org.[User] u ON r.Id = u.RoleID
WHERE u.email LIKE '%myemail%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...