[英]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.