[英]Querying to get objects from a many-to-many relationship
我在用戶表中存儲了用戶對象。
我在Permissions表中存儲了Permission對象。
我有一個MTM_UsersPermissions表,該表將多個User對象映射到多個Permission對象。 如果User.id = 1
和Permission.id = 10
,並且此用戶具有此權限,則MTM_UsersPermissions中有一條ID_A = 1
和ID_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.