Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查询以从多对多关系中获取对象_Mysql_Many To Many - Fatal编程技术网

Mysql 查询以从多对多关系中获取对象

Mysql 查询以从多对多关系中获取对象,mysql,many-to-many,Mysql,Many To Many,我将用户对象存储在用户表中 我将权限对象存储在权限表中 我有一个MTM_UsersPermissions表,它将多个用户对象映射到多个权限对象。如果User.id=1和Permission.id=10,并且该用户具有此权限,则MTM_usersMissions中存在一条记录,其id_a=1和id_B=10 我想获得与给定用户关联的所有权限,知道用户ID 我有一个功能性的问题: 选择Permissions.id、Permissions.Name、Permissions.Title、Permiss

我将用户对象存储在用户表中

我将权限对象存储在权限表中

我有一个MTM_UsersPermissions表,它将多个用户对象映射到多个权限对象。如果
User.id=1
Permission.id=10
,并且该用户具有此权限,则MTM_usersMissions中存在一条记录,其
id_a=1
id_B=10

我想获得与给定用户关联的所有权限,知道用户ID

我有一个功能性的问题:

选择Permissions.id、Permissions.Name、Permissions.Title、Permissions.Description、Permissions.OwnerURI FROM Permissions JOIN OTM_Users在OTM_Users上的任务。id_B=Permissions.id在OTM_Users上加入用户。id_A=:user_id;

(其中,
user\u id
是用户的id)

这似乎只是检索与每个用户关联的权限。但是,每个权限都是由用户表中的用户数复制的。例如,如果用户分配了一个权限,但总共有五个用户,则将检索正确的权限,但每个权限将有五个

我对JOIN语句没有太多经验。我试着用这个答案来得到一个有效的解决方案,但是仍然缺少一些东西。

使用MySQL 5.5

我错过了什么


ilmiont

您不必加入用户表,您的OTM_UsersMissions表已包含用户id,该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;

感谢您的及时回复,工作完全符合预期:)