2016-12-05 119 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