查询违反同部门采购禁令的员工交易记录SQL需求
找出存在同部门采购行为的员工对
没问题,我来帮你解决这个找出违规同部门采购的问题!核心思路是把采购记录和员工的部门信息关联起来,通过两次关联员工表分别获取采购方和供应方的部门信息,再筛选出两者部门一致的记录。
完整SQL查询语句
SELECT p.Emp_ID AS 采购方ID, e1.Emp_Name AS 采购方姓名, p.Bought_From_Emp_ID AS 供应方ID, e2.Emp_Name AS 供应方姓名, e1.Dept_ID AS 共同部门ID FROM 员工采购记录表 p JOIN 员工信息表 e1 ON p.Emp_ID = e1.Emp_ID JOIN 员工信息表 e2 ON p.Bought_From_Emp_ID = e2.Emp_ID WHERE e1.Dept_ID = e2.Dept_ID;
语句解释
JOIN 员工信息表 e1:关联采购记录里的采购方ID,拿到采购方的部门和姓名信息JOIN 员工信息表 e2:关联采购记录里的供应方ID,拿到供应方的部门和姓名信息WHERE e1.Dept_ID = e2.Dept_ID:精准筛选出采购方和供应方属于同一部门的违规采购行为
基于你提供的测试数据,执行后会得到以下结果
| 采购方ID | 采购方姓名 | 供应方ID | 供应方姓名 | 共同部门ID |
|---|---|---|---|---|
| 1 | John | 2 | Bob | 1 |
| 4 | Jack | 5 | Jill | 3 |
如果只需要员工ID信息,可以简化查询字段:
SELECT p.Emp_ID, p.Bought_From_Emp_ID FROM 员工采购记录表 p JOIN 员工信息表 e1 ON p.Emp_ID = e1.Emp_ID JOIN 员工信息表 e2 ON p.Bought_From_Emp_ID = e2.Emp_ID WHERE e1.Dept_ID = e2.Dept_ID;
内容的提问来源于stack exchange,提问作者MattR
相关产品推荐
相关产品推荐

