sql.0限制相关表的数量

sql.0限制相关表的数量,sql,Sql,我需要选择一个有一个联接表的表 例如,有以下表格: Role,AccountRole,Account AccountRole - many to many relationship 需要选择角色,该角色有一个帐户 Role table id name 1 admin 2 user 3 external Account table id name 1 homer 2 jessica 3 simpson AccountRole table accou

我需要选择一个有一个联接表的表

例如,有以下表格:

Role,AccountRole,Account
AccountRole - many to many relationship
需要选择角色,该角色有一个帐户

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)


如何执行此操作

您想要什么条件?示例:其中c.name='account1'。但如果我添加这个条件,结果集就有角色,角色不止一个account@MaksiK您能给出具有所需结果的样本记录吗?它适用于此查询,但不在实际查询中:
从worker上的worker-worker内部联接帐户acc中选择worker.id。帐户\u id=acc.id内部联接帐户\u角色acc上的accountRole=accountRole.account\u id内部联接角色accountRole上的内部联接角色。角色\u id=role上的操作。id=角色\u操作\u id内部联接操作操作role_action.action_id=act.id和act.code='external'按worker.id分组,count(*)为1
此处有什么问题您想要什么条件?示例:其中c.name='account1'。但如果我添加这个条件,结果集就有角色,角色不止一个account@MaksiK您能给出具有所需结果的样本记录吗?它适用于此查询,但不在实际查询中:
从worker上的worker-worker内部联接帐户acc中选择worker.id。帐户\u id=acc.id内部联接帐户\u角色acc上的accountRole=accountRole.account\u id内部联接角色accountRole上的内部联接角色。角色\u id=role上的操作。id=角色\u操作\u id内部联接操作操作role_action.action_id=act.id和act.code='external'按worker.id分组,计数(*)为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