抱歉,这个标题不是很清楚。这是我所拥有的:
SELECT u.name
FROM users u
INNER JOIN users_permissions
ON users_permissions.user_id = u.id
AND users_permissions.permission_id IN ( 1,2 )
LEFT JOIN users_events
ON users_events.user_id = u.id
AND users_events.event_id = 3
好的,所以:
权限“1”允许您编辑所有事件。权限“2”仅允许您编辑某些事件,这些事件在表users_events中指定。
我希望查询结果只包含那些可以编辑指定事件的用户。
在伪逻辑中,这是:
其中 (permission = 1) 或 (permission = 2 and event = 3)
上面的查询将包括具有权限“2”(特定于事件)的用户,即使他们可以编辑的事件列表不包括我正在检查的事件。
本质上,如果 users_permissions 表中的匹配权限为“2”,我只关心将 users 表连接到 users_events 表。
我怎么做?:)