-3

MySQLに4つのテーブルがあります

ユーザー

ここに画像の説明を入力してください

ユーザー情報

ここに画像の説明を入力してください

USER_RIGHTS

ここに画像の説明を入力してください

101 =正しく読む

102 =書き込み権

103 =削除権

グループ

ここに画像の説明を入力してください

INNER JOINを使用してすべてのユーザーを選択したい場合は、次のようにします。

SELECT users.id, user_info.first_name, user_info.last_name, user_rights.right
    FROM `users`
INNER 
    JOIN user_info 
    ON users.id = user_info.user_id
ORDER BY user_info.first_name;

そして私は2人のユーザーを取得します。

たとえば、グループ1の権限を持つメンバーを選択する別の内部結合を作成したいのですが、コードが機能しません...

SELECT users.id, user_info.first_name, user_info.last_name, user_rights.right
    FROM `users`
INNER 
    JOIN user_info 
    ON users.id = user_info.user_id
INNER 
    JOIN user_rights 
    ON user_rights.rights = '101' 
ORDER BY user_info.first_name;

アイデアは、特定のグループでREAD権限を持つメンバーを選択することです。私が自分自身を明確にすることを願っています。

4

3 に答える 3

4
SELECT users.id, user_info.first_name, user_info.last_name, user_rights.right
    FROM `users`
INNER 
    JOIN user_info 
    ON users.id = user_info.user_id
INNER 
    JOIN user_rights 
    ON user_rights.user_id = users.id 
INNER JOIN groups 
    on groups.id = user_rights.group
where user_rights.right = '101' 
and groups.group_name = 'Human Resources'
ORDER BY user_info.first_name;
于 2012-05-22T12:38:10.430 に答える
1

グループ テーブルとの結合を追加する必要があります。

SELECT users.id, user_info.first_name, user_info.last_name, user_rights.right
    FROM `users`
INNER 
    JOIN user_info 
    ON users.id = user_info.user_id
INNER 
    JOIN user_rights 
    ON user_rights.user_id = users.id
INNER 
    JOIN groups 
    ON user_rights.group = groups.id
WHERE user_rights.rights = '101' AND groups.group_name = 'Human Resources'
于 2012-05-22T12:39:55.653 に答える
0

左結合と User_Rights を使用して、すべてのユーザーと権限を取得します

SELECT users.id, 
       user_info.first_name, 
       user_info.last_name, 
       user_rights.right 
FROM   users 
       INNER JOIN user_info 
         ON users.id = user_info.user_id 
       LEFT JOIN user_rights 
         ON user_rights.user_id = users.id 
            AND user_rights.right = '101' 
       LEFT JOIN GROUPS 
         ON user_rights.group = GROUPS.group 
            AND groups.group_name = 'Human Resources' 
ORDER  BY user_info.first_name; 
于 2012-05-22T12:39:45.573 に答える