输出表中的所有数据并显示哪些行属于用户

时间:2014-08-20 09:34:26

标签: php mysql

我有一个包含各种用户角色的角色表。

数据透视表将此连接到我的用户表。

users
id | name

roles
id | title

user_role
user_id | role_id

我想显示所有存在的角色,并预先勾选属于特定用户的角色。

我怎么会这样做,我认为我不能在mySQL中做到这一点?

我正在考虑使用一个查询获取所有角色,然后使用另一个查询获取属于特定用户的所有角色。

然后遍历所有角色,如果与特定用户角色匹配,则输出一个复选框而不是未选中的框。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

这样的东西
SELECT R.id as role_id,
       R.title as role_title,
       UR.user_id as user_id,
       U.name as user_name
  FROM Roles R
  LEFT JOIN user_role UR
         ON UR.role_id = R.id
        AND UR.user_id = :myuserid
  LEFT JOIN users U
         ON U.id = UR.user_id

应该返回一个完整的角色列表,在user列中包含NULL或用户ID,以指示用户已被授予的任何角色(用户通过id标识为:myuserid)

答案 1 :(得分:-1)

我认为普通的SQL查询可以完成大部分工作:查看此SQLFIddle以查询查询的样本

SELECT r.* FROM roles r LEFT JOIN user_role ur ON  r.id=ur.role_id WHERE ur.user_id=3;