Sql 尝试使用联接查询将三个不同表中的信息绑定到一个表中

Sql 尝试使用联接查询将三个不同表中的信息绑定到一个表中,sql,oracle10g,Sql,Oracle10g,所以我有三个查询,我试图在department name字段中加入所有查询,但我不知道如何对它们进行加入。下面的每个查询都会提供我正在查找的部分信息,但我希望这些信息按部门合并到一个表中。 第一个表是:(按部门划分的员工总数) ` ` 这就给了我: 管理3 贷款1 操作14 二是: ` ` 这给了我这个(经理id号,以及他们在哪个部门工作) 操作3 贷款4 操作6 操作10 操作13 操作4 操作16 管理1 我的第三张桌子: ` ` 这就给了我: 管理沃尔瑟姆 沃尔瑟姆行动 沃伯恩操作 沃尔瑟

所以我有三个查询,我试图在department name字段中加入所有查询,但我不知道如何对它们进行加入。下面的每个查询都会提供我正在查找的部分信息,但我希望这些信息按部门合并到一个表中。 第一个表是:(按部门划分的员工总数) `

` 这就给了我:

管理3
贷款1
操作14

二是: `

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

操作3
贷款4
操作6
操作10
操作13
操作4
操作16
管理1

我的第三张桌子: `

` 这就给了我:

管理沃尔瑟姆
沃尔瑟姆行动
沃伯恩操作
沃尔瑟姆贷款
操作昆西
塞勒姆运营部

我想要一个表格,只提供部门(管理、贷款、运营)对员工(第一个表格)、经理(管理每个部门员工的总经理)以及每个部门所在的分支机构的总数。因此,查询应该返回 部门|员工数|地点数|经理数以及各部门各自的总数


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

您应该能够通过使用子选择来获得所需的结果

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

嗯,我无法让代码工作。我还想知道你为什么要用d.dept\u id=d.dept\u id做where子句?那是个打字错误,还有几个其他的。我为此创建了一个SQL FIDLE,我知道语法是正确的。如果您想添加一些测试数据,我可以帮助您排除错误。
    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;
    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;
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