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