如何为用户层次关系编写MYSQL查询?

时间:2015-04-15 10:20:24

标签: php mysql join

我有用户表。

  • id - 主键
  • user_id - 外键(用户ID)
  • 名称
  • 用户名
  • 电子邮件
  • 密码

表关系

  • 超级管理员
    • ADMIN1
      • manager1
        • salesman1
          • customer1表
          • 的customer2
        • salesman2
          • customer3
          • customer4
      • manager2
        • salesman3
          • customer5
          • customer6
        • salesman4
          • customer7
          • custom8

[问题] 当经理登录后,向经理人展示所有销售人员&客户。

当管理员登录时,所有经理,销售员和&客户将可见。

这对所有用户都是一样的。如果用户有他/她的用户,他/她可以看到所有用户列表。

所以我需要帮助来编写这种类型的SQL查询。

我是这样写的 -

SELECT t1.id, t1.group_id, t1.name AS superadmin, t2.name as admin, t3.name as manager, t4.name as salesman, t5.name as customer FROM users AS t1 LEFT JOIN users AS t2 ON t2.user_id = t1.id LEFT JOIN users AS t3 ON t3.user_id = t2.id LEFT JOIN users AS t4 ON t4.user_id = t3.id LEFT JOIN users AS t5 ON t5.user_id = t4.id where t3.id = 15

我希望这会动态地发生。

1 个答案:

答案 0 :(得分:0)

您可以在用户表中添加列role。然后,假设您将所有已登录用户的数据保存在SESSION中,您可以

SELECT * FROM users WHERE role < '$_SESSION[role]' AND .....

此外,您可以让父角色为每个角色使用更多层次结构。