0

抱歉,这个标题不是很清楚。这是我所拥有的:

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 表。

我怎么做?:)

4

1 回答 1

0

您需要使用该WHERE子句:

WHERE perms.permission_id=1 OR (perms.permission_id=2 AND events.event_id=3)
于 2012-04-23T15:33:37.717 回答