尝试将来自三个不同表的信息绑定到一个带有连接查询的表中

时间:2013-06-13 18:00:52

标签: sql oracle10g

所以我有三个查询我正在尝试加入部门名称字段,但我不知道如何加入它们。我在下面的每个查询都给了我一些或部分我正在寻找的信息,但我希望这些信息按部门合并在一个表中。 第一个表是:(按部门划分的员工总数) `

    select d.name, count(*)
    from employee e join department d
    on e.dept_id = d.dept_id
    group by d.name;

` 这给了我这个:

行政管理3
贷款1
行动14

第二个是: `

    select d.name, m.emp_id
    from employee e join employee m
    on e.superior_emp_id = m.emp_id
    join department d
    on d.dept_id = e.dept_id
    group by d.name, m.emp_id;

` 这给了我这个(经理身份证号码,以及他们在哪个部门工作)

行动3
贷款4
行动6
行动10
行动13
行动4
行动16
管理1

和我的第三张表: `

    select d.name, b.city
    from employee e join branch b
    on e.assigned_branch_id = b.branch_id
    join department d
    on d.dept_id = e.dept_id
    group by d.name, b.city;

` 这给了我这个:

行政Waltham
沃尔瑟姆行动 操作Woburn
贷款Waltham
运营昆西
运营Salem

我想要一张表,只是给我部门(管理员,贷款,操作)的员工总数(第一张表),经理(管理每个部门员工的总经理)以及有多少个不同的分支机构每个部门都位于。所以查询应该回来了 部门|员工人数|位置计数|经理计数及各部门各自的总数。

我正在试图弄清楚如何对此进行连接查询。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您应该可以使用子选择

来获得您要查找的结果
SELECT 
    d.Name AS Dept
   ,(SELECT COUNT(*)
    FROM Employee e
    WHERE e.dept_id = d.dept_id ) AS StaffCount
   ,(SELECT COUNT(*)
    FROM Employee e 
    JOIN Branch b ON e.assigned_branch_id = b.branch_id
    WHERE e.dept_id = d.dept_id GROUP BY b.city) AS LocationCount
   ,(SELECT COUNT(*)
    FROM Employee e
    JOIN Employee m ON e.superior_emp_id = m.emp_id
    WHERE e.dept_id = d.dept_id GROUP BY m.emp_id) AS ManagerCount
 FROM department d