我有三个表在多对多的关系中希望得到结果作为原始数据布尔值

时间:2013-09-26 21:27:57

标签: mysql sql many-to-many

说我有

users.id

roles.id

usersroles.users_id, usersroles.roles_id

如何为具有三重连接的用户1获取以下标题(我认为选择中的IF子句?):

users.id, roles.id, (tinyint)has_the_role
1,1,0
1,2,1
1,3,1
1,4,0

1 个答案:

答案 0 :(得分:1)

您需要两个连接:

SELECT users.id, roles.id, 
    CASE WHEN usersroles.roles_id IS NULL THEN 0 ELSE 1 END AS has_the_role
FROM users
INNER JOIN roles
LEFT JOIN usersroles ON users.id = usersroles.users_id AND roles.id = usersroles.roles_id

首先,您将users表与roles表连接(无条件,因此所有可能性都已连接),然后检查是否存在特定组合的usersroles条目。