【问题标题】:SQL multiple tables select with conditionsSQL多表带条件选择
【发布时间】:2025-11-27 07:40:02
【问题描述】:

假设我在 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

我希望它返回一个特定 project_id(比如说 project_id=1)的列表,其中包含项目每个阶段的员工以及每个阶段的工作时间。

类似的东西(不完全是一个例子)

+----------------+----------------+----------------+----------------+--+
|     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            |  |
+----------------+----------------+----------------+----------------+--+

似乎无法弄清楚。

感谢您的帮助!

【问题讨论】:

  • 是的,我的错误标签!

标签: sql oracle select


【解决方案1】:

您需要在表中使用外键。例如,您需要员工表中的 project_id 来了解每个员工当前正在从事的项目。或者,您可以在其中映射这样的数据的另一个表。然后,就是使用写得很好的 where 子句了。

【讨论】:

  • 是的,我忘记写了,但是外键和主键都设置好了!
  • 那它们是什么?例如,将员工与项目联系起来的外键是什么?
  • 任何同名的我们都已连接。例如 PROJECT.PROJECT_ID 与 PHASES.PROJECT_ID 等连接。
最近更新 更多