【发布时间】:2015-06-21 06:17:28
【问题描述】:
我有用户表。
- id - 主键
- user_id - 外键(用户 ID)
- 姓名
- 用户名
- 电子邮件
- 密码
表关系
- 超级管理员
- 管理员1
- 经理1
- 业务员1
- 客户1
- 客户2
- 业务员2
- 客户3
- 客户4
- 业务员1
- 经理2
- 业务员3
- 客户5
- 客户6
- 业务员4
- 客户7
- custom8
- 业务员3
- 经理1
- 管理员1
[问题] 当经理登录后,会向经理下的所有用户显示销售人员和客户。
当管理员登录后,所有经理、销售员和客户都将可见。
这对所有用户都是一样的。如果用户下有用户,他/她可以看到所有用户列表。
所以我需要帮助来编写这种类型的 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
我希望这会动态发生。
【问题讨论】:
-
这是一个很大的话题,并不容易。用户层次系统需要非常强大的算法。我在一个开源项目上实现过,大家可以下载查看代码sqcrm.com
-
我认为您可能必须再包含两列(usertype ,parent_id)来管理层次结构。
-
还可以考虑在查询中获取原始数据并使用 PHP 滚动数据以对其进行排序。
-
我有另一个名为 user_group 的表。它有用户类型。 parent_id 是 user_id