Php MySQL,查找a";经理;

Php MySQL,查找a";经理;,php,mysql,database,laravel,Php,Mysql,Database,Laravel,我有一个“经理”,可以分配到多个地点,在每个地点处理一个部门。我想要一个能抓住所有这些的查询: 在上面的例子中(在链接中),你可以看到我已经计算了每个部门的员工数量 经理和员工位于名为staff的表中,我不希望查询检索经理记录。So用户_role=“Employee” 我在laravel中将其作为原始查询运行,以便可以将其作为对象检索: $employees= DB::query('query goes in here')->get(); 例如,员工id为“5”的经理可以让经理所在的所

我有一个“经理”,可以分配到多个地点,在每个地点处理一个部门。我想要一个能抓住所有这些的查询:

在上面的例子中(在链接中),你可以看到我已经计算了每个部门的员工数量

经理和员工位于名为staff的表中,我不希望查询检索经理记录。So用户_role=“Employee”

我在laravel中将其作为原始查询运行,以便可以将其作为对象检索:

$employees= DB::query('query goes in here')->get();
例如,员工id为“5”的经理可以让经理所在的所有地点和部门的所有员工都参与进来,如果这样做有意义的话

我的猜测是:

First Query SELECT ALL FROM staff, locations and departments where user_role = "employee"

Second Query SELECT ALL FROM staff, locations and departments where manager id=5
是否删除不满足第二个查询但将两个查询合并在一起的所有结果


非常感谢您的帮助

我想这就是你想要的。左键加入员工部门上的经理部门,并获取每个部门中“员工”员工的计数(即使为0)

下面是针对经理#2显示的(如果要查看所有经理,可以删除where子句和group by manager id和dept id)


经理所在的所有记录。我知道我需要一个交集来获取经理的id和他的位置。这是正确的,我想检索所有的个人记录,而不是它们的数量。感谢您检索所有记录,而不是所有地点的每个员工的记录,但是如果经理没有被分配到与该部门员工相同的地点,则不应显示该记录?每个地点都有一组部门。因此,位置1将有5个部门,位置2也将有5个部门。如果经理只在位置1,他们不应该看到位置2员工(分配到该位置的部门)的记录啊,我明白了。我来看看。
SELECT dept.name AS dept, loc.address1 AS loc, emp.*
FROM staff AS mgr
INNER JOIN department_staff AS mgr_dept
    ON mgr_dept.staff_id = mgr.staff_id
INNER JOIN departments AS dept
    ON mgr_dept.dept_id = dept.dept_id    
INNER JOIN location_staff AS mgr_loc
    ON mgr_loc.staff_id = mgr.staff_id
INNER JOIN locations AS loc
    ON mgr_loc.loc_id = loc.loc_id    
INNER JOIN (
  SELECT emp.*, dept.dept_id, loc.loc_id
  FROM staff AS emp
  INNER JOIN department_staff AS dept
    ON emp.staff_id = dept.staff_id
  INNER JOIN location_staff AS loc
    ON emp.staff_id = loc.staff_id
  WHERE emp.user_role = "Employee"
) AS emp
  ON emp.loc_id = mgr_loc.loc_id 
  AND emp.dept_id = mgr_dept.dept_id
WHERE mgr.staff_id = 2