sql多表选择条件

dfty9e19  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(398)

假设我在oracle中有四个表:

+--------------------+----------------------+
|      PROJECTS      |        PHASES        |
+--------------------+----------------------+
| PROJECT_ID integer | PHASE_ID integer     |
|                    | PROJECT_ID integer   |
|                    | PHASE varchar2(50)   |
|                    | WORKING_HOURS number |
+--------------------+----------------------+

+---------------------+-------------------------+
|        TASKS        |        EMPLOYEES        |
+---------------------+-------------------------+
| TASK_ID integer     | EMPLOYEE_ID integer     |
| PHASE_ID integer    | FIRST_NAME varchar2(50) |
| EMPLOYEE_ID integer | LAST_NAME varchar2(50)  |
+---------------------+-------------------------+

编辑1。 project.project_id 是主键 phases.phase_id is 主键 tasks.task_id is 主键 employess.employee_id 是主键从其他表到上面的所有其他引用都是外键!
比如说 PHASES.PHASE 可以有值:alpha,beta,olympus,unicorn
我希望它返回一个特定项目的列表,其中包含每个项目阶段的员工以及每个阶段的工作时间。
类似的东西(不完全是一个例子)

+----------------+----------------+----------------+----------------+--+
|     alpha      |      beta      |    olympus     |    unicorn     |  |
+----------------+----------------+----------------+----------------+--+
| name1 surname1 | name2 surname2 | name1 surname1 | name4 surname4 |  |
| name2 surname2 | name4 surname4 | name2 surname2 |                |  |
| name3 surname3 |                | name4 surname4 |                |  |
| name4 surname4 |                |                |                |  |
| 15             | 240            | 13             | 300            |  |
+----------------+----------------+----------------+----------------+--+

好像想不通。
谢谢你的帮助!

bf1o4zei

bf1o4zei1#

您的表中需要外键。例如,您将需要employees表中的project\u id来知道每个员工当前正在处理哪个项目。或者,在另一个表中Map这样的数据。然后,就是使用写得好的where子句。

相关问题