【发布时间】:2012-03-04 13:34:49
【问题描述】:
大家早上好, 我希望有人可以帮助我解决问题。我试图弄清楚如何找到哪些员工在每个项目中工作。
如果我有一个包含 ssn、project_id 和工作小时数列的works_on 表;以及一个带有 project_id、project_name、dept 的表项目。我需要知道哪些员工负责每个项目。
这是一个家庭作业问题,我应该用关系代数来做,但是普通的旧 sql 代码或任何关于如何做到这一点的想法都是一般性的,将不胜感激。我只是没看到...
感谢您的任何指点。
编辑:如果有人有任何 cmets/建议,这是我的最终版本。我想我明白了。此外,它与员工表连接以获取名称,这是作业规范中所要求的。
WORKS1 ← ρ (SSN, PNUMBER) π ESSN, PNO (WORKS_ON)
WORKS_DIV ← (PROJECT x WORKS1) – WORKS1
EMP_EVERY_PROJ ← WORKS1 – WORKS_DIV
π FNAME, MINIT, LNAME (EMP_EVERY_PROJ ⋈ SSN=SSN EMPLOYEE)
【问题讨论】:
-
为了引导您正确的方向,解决此问题的典型方法是使用
GROUP BY和HAVING COUNT(distinct project_id)过滤器 -
您也可以搜索
[sql-match-all]标记的问题。 -
Here 是一篇解释除法使用代数和 SQL 的文章。