1

結合テーブルが 1 つあるテーブルを選択する必要があります

たとえば、次のテーブルがあります。

Role,AccountRole,Account
AccountRole - many to many relationship

1 つのアカウントを持つロールを選択する必要があります

Role table
id  name 
1   admin 
2   user 
3   external 

Account table
id  name 
1   homer 
2   jessica 
3   simpson 

AccountRole table
account_id role_id 
1          1 
1          2 
2          2 
3          3 

クエリ:

SELECT  role.id    
FROM    Role role
        INNER JOIN AccountRole accRole
            ON accRole.role_id = role.id

        INNER JOIN Account acc
            ON accRole.account_id = acc.id

GROUP BY role.id
HAVING COUNT(*) = 1

クエリ結果:

role.id 
2 
3 

しかし、role.idが必要です。これは、role.name = "external"です(この場合、role.id = 3ですが、2ではありません)

これを行う方法

4

1 に答える 1

1
SELECT  a.ID    -- change this to the original name of your Role Column
FROM    Role a
        INNER JOIN AccountRole b
            ON a.RoleID = b.RoleID -- an assumption that their linking
                                   -- column name is RoleID
        INNER JOIN Account c
            ON b.AccountID = c.AccountID -- an assumption that their linking
                                         -- column name is AccountID
GROUP BY a.ID
HAVING COUNT(*) = 1
于 2012-12-12T15:47:20.037 に答える