2016-12-05 163 views
2

我想查询三个表。现在我已经成功加入了两张桌子。我正在做我的第一个数据库,但现在我真的陷入困境。这里是我的表三个表上的一个SQL查询

驱动程序

|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号”

我的目标是要找到一个司机,谁是驾驶福特现在依然这样做有一个有效的合同(END_DATE没有设置)

我想作一个查询超过三所以结果应该显示一个驱动程序FIRST NAME,LAST NAME和一个队的国家

我试过一些例子,我发现从StackOverFlow和编辑这些,但我坚持添加第三个TEAMS表查询。

下面是我用

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 

回答

1

一个我觉得这应该工作(加入所有表与相应的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'

+0

非常感谢你。这正是我需要的! – Kaspar