簡體   English   中英

查詢以從多對多關系中獲取對象

[英]Querying to get objects from a many-to-many relationship

我在用戶表中存儲了用戶對象。

我在Permissions表中存儲了Permission對象。

我有一個MTM_UsersPermissions表,該表將多個User對象映射到多個Permission對象。 如果User.id = 1Permission.id = 10 ,並且此用戶具有此權限,則MTM_UsersPermissions中有一條ID_A = 1ID_B = 10

我想獲取與給定用戶關聯的所有權限,並且知道用戶ID。

我有一個有點功能查詢: SELECT Permissions.id, Permissions.Name, Permissions.Title, Permissions.Description, Permissions.OwnerURI FROM Permissions JOIN OTM_UsersPermissions ON OTM_UsersPermissions.ID_B = Permissions.id JOIN Users ON OTM_UsersPermissions.ID_A = :user_id;

(其中user_id是用戶的ID)

這似乎只在檢索與每個用戶關聯的權限。 但是,每個權限都由“用戶”表中存在的用戶數來復制。 例如,如果為用戶分配了一個權限,但是總共有五個用戶,則將檢索正確的權限,但是每個權限將有五個。

我對JOIN語句沒有太多經驗。 我嘗試使用此答案來獲得可行的解決方案,但仍然缺少一些東西。 在PHP MySQL查詢中獲取外鍵對象的干凈方法

使用MySQL 5.5。

我想念什么?

ilmiont

您不必加入Users表,您的OTM_UsersPermissions表已經包含用於過濾結果的用戶ID:

SELECT Permissions.id, Permissions.Name, Permissions.Title, Permissions.Description, Permissions.OwnerURI FROM Permissions JOIN OTM_UsersPermissions ON OTM_UsersPermissions.ID_B = Permissions.id
WHERE OTM_UsersPermissions.ID_A = :user_id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM