2014-09-29 84 views
0

我想在内部连接上使用子查询从部门中没有程序员的表中取回所有部门编号和名称,但是由于它返回时遇到了一些麻烦没有价值。这是我的代码,谢谢你的帮助。SQL内部连接和子查询

select Departments.Department_Name, Departments.Department_No 
from employees inner join departments 
on departments.department_No = employees.Department_No 
where Employees.Department_No != 
      (select Department_Name 
      from Employees, Departments 
      where Job_ID = '%pro%') 
+0

您department_name'比较''到department_no'。这看起来不正确。 – 2014-09-29 11:55:31

+0

你能提供一个表/结果的例子吗? – 2014-09-29 11:56:06

+0

您的子查询正在使用'Employees,Departments'而没有加入 - 这看起来不正确。你应该用你的表格结构,样本数据和期望的结果来编辑你的问题。 – Taryn 2014-09-29 11:56:52

回答

1

据我所知,你想是这样的:

select d.Department_Name, d.Department_No 
from departments d 
WHERE NOT EXISTS (SELECT 1 FROM Employees 
        WHERE d.Department_No = Department_No 
        AND Job_ID LIKE '%pro%') 

这将选择所有的部门,对此不存在的雇员的job_ib包含“亲”。

+0

谢谢,这很有效。 – BamBam 2014-09-29 12:31:52

0

试试这个:

select d1.Department_Name,d1.Department_No 
from departments d1 
where d1.Department_No in (select e1.Department_No 
          from Employees e1 
          where e1.Department_No=d1.Department_No and 
          e1.job_id not in ('programmer'));