SQL查询,我已经尝试过,但我无法得到它

时间:2019-03-23 14:41:23

标签: mysql

查找所有其管理的所有雇员共享同一办公室的经理。您应该返回他们的开斋节,他们的名字以及所有被管理人员所在的办公室。

SELECT e.eid    AS ID,
       e.NAME   AS NAME,
       e.office AS office
FROM   employee e,
       manager m
WHERE  e.eid = m.mid
GROUP  BY m.mid;  

以上查询对吗?

1 个答案:

答案 0 :(得分:0)

您需要从表Employee中选择列,而要求是要获取经理的详细信息。
您可以在INNER JOIN和聚合这2个表之间使用GROUP BY m.mid, m.name来做到这一点:

SELECT 
  m.mid as ID, 
  m.name as Name, 
  MAX(e.office) office 
FROM Manager m INNER JOIN Employee e
ON e.mid = m.mid 
GROUP BY m.mid, m.name
HAVING COUNT(DISTINCT e.office) = 1

语句HAVING COUNT(DISTINCT e.office) = 1设置了所有雇员共享1个办公室的条件。
我猜想Employee表中有一列像mid那样引用了员工的经理ID。将其更改为实际列的名称。