sql - 查找从事特定项目编号的人员的姓名
问题描述
我正在尝试查找在休斯顿从事至少一个项目但其部门在休斯顿没有办公地点的所有员工的姓名和地址。我的数据库架构和表数据如下所示:架构设计,表数据。我的这个作业的代码如下
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”,但是我的查询没有产生任何结果。
解决方案
我会试试这个(虽然没有测试):
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'
推荐阅读
- r - 使用 MC 方法求整数值
- php - 在多个页面中使用 PHP 变量?
- c++ - atomic 和 std::mutex 的成本是否会扼杀我的多线程 RLNC 编码性能
- javascript - 如何在不附加的情况下刷新 Google 日历事件列表?
- android - 在 Android 改造后的方法中,它显示 200 ok,但数据没有发送到服务器,
- r - 使用 rmarkdown::render 时变量未知
- elasticsearch - logstash 提取嵌套字段并将其移动到新的父字段中
- java - 项目基目录之外的目录。Maven 战争插件 -
- unity3d - VR Cardboard SDK 1.120 和 Unity 2017.3:如何检测磁铁触发器?
- vba - 添加对使用带有编号的项目宏的正则表达式找到的数字或文本的交叉引用