从多个表中选择数据并在mysql中进行分组

时间:2016-06-28 09:55:17

标签: mysql sql

这是我正在进行的任务的一部分。 我有一个名为COMPANY的数据库,其中有6个表

  • EMPLOYEE
  • DEPARTMENTS
  • DEPT_EMP
  • TITLES
  • SALARIES
  • DEPT_MANAGER

现在我必须列出每个部门的工程师人数。

我提出了以下问题:

select departments.dept_name as Department_name,
       count(titles.title) as No_Of_Engineers
from departments,
     titles
where titles.emp_no = dept_emp.emp_no
  and dept_emp.dept_no = departments.dept_no
  and titles.title like "% engineer %"
group by departments.dept_no;

但这给了我错误

  

未知栏' dept_emp.emp_no'在' where子句'

但是我的dept_emp表有一个名为emp_no的列。 谁能看到这个错误? 提前致谢

1 个答案:

答案 0 :(得分:1)

您错过了dept_emp的加入:

select departments.dept_name as Department_name,
       count(titles.title) as No_Of_Engineers
from departments
     INNER JOIN dept_emp
      ON(dept_emp.dept_no = departments.dept_no)
     INNER JOIN titles
      ON(titles.emp_no = dept_emp.emp_no)
WHERE titles.title like "% engineer %"
group by departments.dept_no;

我还更正了你的连接,请尽量避免使用隐式连接语法(以逗号分隔)并使用正确的连接语法。