首页 > 解决方案 > 查找从事特定项目编号的人员的姓名

问题描述

我正在尝试查找在休斯顿从事至少一个项目但其部门在休斯顿没有办公地点的所有员工的姓名和地址。我的数据库架构和表数据如下所示:架构设计表数据。我的这个作业的代码如下

SELECT e.Fname, e.Minit, e.Lname, e.Address
FROM EMPLOYEE AS e
WHERE EXISTS (SELECT * FROM WORKS_ON AS w, PROJECT AS p
WHERE w.Essn=e.SSN AND p.Plocation=w.Pno AND p.Plocation='Houston')
AND
NOT EXISTS
(SELECT * FROM DEPT_LOCATIONS AS dl 
WHERE dl.Dlocation=e.Dno AND dl.Dlocation='Houston')

通过查看表数据,应该出现的名称是“Jennifer S Wallace”,但是我的查询没有产生任何结果。

标签: sqlsql-server

解决方案


我会试试这个(虽然没有测试):

SELECT 
    * 
FROM 
    employee e
INNER JOIN
    works_on as w ON e.San = w.Essn
INNER JOIN
    project p ON w.Pno = p.Pnumber AND p.Plocation = 'Houston'
INNER JOIN
    department d ON e.Dno = d.Pno
INNER JOIN
    dept_locations dl ON d.Pno = dl.Dnumber AND dl.Dlocaion != 'Houston'

推荐阅读