一次 SQL 查询三个表

One SQL query over three tables

我想查询三个 table。现在我已经成功地加入了两个 table。我正在做我的第一个数据库,但现在我真的被困住了。这是我的 tables

司机

|DRIVER_ID|FIRST_NAME|LAST_NAME|AGE|
|        1|John      |Smith    |19 |
|        2|Steve     |Oak      |33 |
|        3|Mary      |Sanchez  |22 |

Drivers_in_Teams

|DRIVERS_IN_TEAMS_ID|DRIVER_ID|TEAM_ID|BEG_DATE |END_DATE |CAR        |
|                  1|        1|      1|18-NOV-05|         |Toyota     |
|                  2|        3|      2|10-APR-12|         |Ford       |
|                  3|        2|      3|19-JUL-01|02-AUG-04|Volkswagen |

团队

|TEAM_ID  |NAME      |COUNTRY |
|        1|Turbo     |Sweden  |
|        2|Rally     |UK      |
|        3|Baguette  |France  |

BEG_DATEs 与 "sysdate-number"

完成

我的目标是找到一个driver,他开着一辆福特车并且仍然有有效的合同(END_DATE 未设置)

我想对三个 table 进行查询,因此结果应显示 driver 团队的名字、姓氏和国家/地区

我尝试了一些从 Whosebug 找到的示例并对其进行了编辑,但我无法将第三个 TEAMS table 添加到查询中。

这是我用的

SELECT FIRST_NAME, LAST_NAME
FROM DRIVERS
JOIN DRIVERS_IN_TEAMS ON DRIVERS.DRIVER_ID = DRIVERS_IN_TEAMS.DRIVER_ID
WHERE DRIVERS_IN_TEAMS.CAR = 'Ford' AND DRIVERS_IN_TEAMS.END_DATE IS NOT NULL

我认为这应该可行(加入所有具有相应 ID 的表,然后你就有了你的条件):

SELECT d.FIRST_NAME, d.LAST_NAME, t.COUNTRY FROM DRIVERS d JOIN DRIVERS_IN_TEAMS dit ON dit.DRIVER_ID = d.DRIVER_ID JOIN TEAM t ON dit.TEAM_ID = t.TEAM_ID WHERE dit.END_DATE IS NULL AND dit.CAR = 'Ford'