查找具有特定字母的员工姓名

Find the name of the employees with a particular letter

我有这样的模式:

Employee (Empno, Empname, City)
Project (Pno, Pname)
Part (Partno, Partname, Color)
Use (Pno, Partno)
Works (Empno, Pno)

根据这些模式,我创建了一个示例表:

目标是找到没有员工工作且名称以 'S'

开头的项目的名称

我使用的是 ORACLE 11g 快捷版。 在这里我使用了这个查询: 对于名称:

Select DISTINCT Pname FROM
(
SELECT w.Empno, p.Pno, p.Pname, e.Empname
FROM Works w
LEFT JOIN Project p ON w.Pno=p.Pno
LEFT JOIN Employee e ON e.Empno=w.Empno
)
WHERE Empname not like 'S%';

如果你想想怎么解释这个过程。有几种方法可以解决这个问题,包括:

  1. 您将从每个 Projects 开始,找出 Employees 名称以 S 开头的项目中是否不存在 Works 的人.您可以使用 NOT EXISTS.
  2. 执行此操作

  1. 同样,从 Project 开始,如果有的话,使用 LEFT OUTER JOIN 查找项目中的 Works 人员及其相应的 Employees 详细信息(但从Project) 并在 JOIN 条件下过滤以 S 开头的员工姓名。然后 GROUP BY 项目的主键并找到那些项目 HAVING a COUNT 零个匹配的员工。

由于这似乎是一道作业题,所以我会把剩下的留给你完成。