You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询与经理无对应权限地点的员工的PostgreSQL脚本求助

解决PostgreSQL权限合规性查询问题

表结构假设

先基于业务场景给出合理的表字段假设(如果你的实际字段名不同,直接替换即可):

  • employee:employee_id(主键)、location_id(员工所在地点)
  • permission:manager_id(关联employee.employee_id)、location_id、permission_type(值为'manager'表示该地点的经理权限)
  • reporting:employee_id(被管理员工ID,关联employee.employee_id)、manager_id(经理ID,关联employee.employee_id)

查询脚本

下面的SQL会找出所有被分配给经理,但该经理没有对应员工所在地点经理权限的员工:

SELECT
    e.employee_id AS 员工ID,
    e.location_id AS 员工所在地点,
    m.employee_id AS 经理ID,
    m.location_id AS 经理所在地点
FROM
    employee e
JOIN
    reporting r ON e.employee_id = r.employee_id
JOIN
    employee m ON r.manager_id = m.employee_id
LEFT JOIN
    permission p ON p.manager_id = m.employee_id 
                AND p.location_id = e.location_id 
                AND p.permission_type = 'manager'
WHERE
    p.manager_id IS NULL;

逻辑解释

  1. 关联员工与经理:通过reporting表将被管理员工(e)和其经理(m)关联起来
  2. 匹配经理权限:用左连接关联permission表,筛选条件是经理ID匹配、权限地点等于员工所在地点、且权限类型为经理权限
  3. 筛选违规记录:左连接后,如果p.manager_id为NULL,说明该经理没有对应员工所在地点的经理权限,这就是我们要找的违规记录

扩展说明

如果你的permission表没有permission_type字段(比如所有权限都是经理权限),可以去掉AND p.permission_type = 'manager'这个条件;如果字段名不同,比如员工表的地点字段叫work_location,直接替换对应字段名即可。

内容的提问来源于stack exchange,提问作者jemacosta08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:41:29