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および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 に答える