我有两个 MySql 表如下:
resource
-----------------------------------------------
id name group owner_id
-----------------------------------------------
1 MyResource1 hs 11
2 MyResource2 ms 24
3 MyResource3 ps 11
...
resource_access
-----------------------------------------------
id resource_id user_id
-----------------------------------------------
1 1 12
2 2 24
3 2 11
4 3 15
...
现在,第一个表是资源列表,当然,owner_id
列中还有它们各自的所有者。第二个表是与另一个用户“共享”该资源的结果。由于来自所有者交换的混乱清理,该表resource_access
可能包含与一行中的user_id
等效的记录。owner_id
resource_access
我只想获取用户有权访问的任何资源的 ID、名称和组,无论他们是所有者还是已与他们共享。这是我对示例用户 (24) 的 MySQL 查询:
SELECT resource.id, resource.name, resource.group
FROM `resource`
INNER JOIN resource_access ON (
resource.owner_id='24'
OR (
resource_access.user_id='24' AND
resource_access.resource_id=resource.id
)
)
现在,它多次返回资源号 2 的 、 和 (如 12 次id
)name
。group
有没有可能的原因?我已经尝试加入LEFT
并RIGHT
得到相同的结果。表中有很多记录resource
,但没有与 2 的记录。与同一用户两次共享资源id
没有重复行。resource_access
提前致谢。