我正在编写一个拥有4级用户的php应用程序 管理员,经理,组,客户端 admin将创建管理器,manager将创建组。 除客户端以外的所有客户都可以 我有一个用户表,其中包括以下字段 ID主要自动 user_name varchar唯一 经理ID GROUPID usertype int(4种类型中的一种)
如果客户不属于经理managerid下的任何经理或集团,则groupid将为0 如果客户端属于某个组,则会为其分配groupid 如果组属于经理,则会为其分配一个managerid 因此,经理可以拥有多个组,一个组可以拥有多个客户 站点以登录页面开始,成功登录后,根据usertype主页将显示客户端列表。 如果它是一个单独的客户,它将只显示他们的名字。 如果它是一个组,它将显示其组下的所有客户端和由它们创建的个人 如果它是一个经理,它应该显示所有客户在他们创建的所有组和个人之下。 我正在寻找的是实现这一工作流程的优化方法。 我可以获得管理员列表(它将是全部),组列表 - 每个人都有他们的组ID 但我对如何创建经理列表感到有点困惑。 我可以找到一个列表,其中包含managerid,并且没有groupid用于个人,并且首先在此manger下查找组,并让所有客户端都拥有这些组ID。但我认为这可以是 用sql查询实现我需要帮助来构建这样的查询。 如果可能的话,我想找出一个查询,它会给我这个列表。 我正在使用codeIgniter来构建此站点。 因此,如果对CI采用查询,那将是非常棒的。 感谢
答案 0 :(得分:0)
SELECT *
from
UserTable
WHERE
groupid
in (select groupid from UserTable where managerid='id')
下面的代码可用于从活动记录中获取数据
$this->db->select('u1.*');
$this->db->from('UserTable u1');
$this->db->join('UserTable u2', 'u1.groupid = u2.groupid');
$this->db->where('u2.managerid', $id);
$this->db->get();
这将生成以下查询
SELECT `u1`.*
FROM (`UserTable` u1)
JOIN `UserTable` u2 ON `u1`.`groupid` = `u2`.`groupid`
WHERE `u2`.`managerid` = 1