一次 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'
我想查询三个 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'