gpt4 book ai didi

mysql - 查询以从多对多关系获取对象

转载 作者:行者123 更新时间:2023-11-29 10:39:53 24 4
gpt4 key购买 nike

我将 User 对象存储在 Users 表中。

我将 Permission 对象存储在 Permissions 表中。

我有一个 MTM_UsersPermissions 表,它将多个 User 对象映射到多个 Permission 对象。如果 User.id = 1Permission.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 语句没有太多经验。我尝试使用这个答案来获得可行的解决方案,但仍然缺少一些东西。 Clean way to get foreign key objects in PHP MySQL query

使用 MySQL 5.5。

我错过了什么?

伊尔蒙特

最佳答案

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

关于mysql - 查询以从多对多关系获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45692394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com