[英]SQL query over two tables
我在查詢時遇到問題:
我的表如下:
車手
|DRIVER_ID|FIRST_NAME|LAST_NAME|AGE|
| 1|John |Smith |19 |
| 2|Steve |Oak |33 |
| 3|Mary |Sanchez |22 |
車手隊
|DRIVERS_IN_TEAMS_ID|DRIVER_ID|TEAM_ID|BEG_DATE |END_DATE |
| 1| 1| 1|18-NOV-05| - |
| 2| 3| 2|10-APR-12| - |
| 3| 2| 3|19-JUL-01|02-AUG-04|
BEG_DATE使用“ sysdate-number”完成
我想進行一個查詢,在該查詢中顯示姓氏和名字最舊的驅動程序,而該驅動程序仍在團隊中。
我嘗試了一些從google找到的示例,但無法使它們正常工作。 我是SQL的新手,不知道如何執行此查詢。
我發現一個例子
SELECT FIRST_NAME, LAST_NAME
FROM DRIVER, DRIVERS_IN_TEAMS
WHERE DRIVER.DRIVER_ID = DRIVERS_IN_TEAMS.DRIVER_ID
AND DRIVERS_IN_TEAMS.BEG_DATE =
SELECT (SELECT MIN(BEG_DATE)
FROM DRIVERS_IN_TEAMS) (SELECT MAX(AGE)
FROM DRIVERS);
嘗試這個:
select top 1 first_name, last_name from Drivers as d
inner join Drivers_in_Teams as dit on d.driver_id = dit.driver_id
where isnull(end_date,'')=''
order by age desc
如果您有任何疑問或代碼不起作用,請發表評論。
我認為應該可以。 沒有資源可以測試和調試。 讓我知道是否有任何問題。
SELECT first_name FROM driver WHERE
driver_id in (select unique(driver_id) from driver_in_teams where end_date is NULL)
and age =(select MAX(age) from drivers)
選擇:
SELECT first_name FROM driver d
INNER JOIN
driver_in_teams dt ON (d.driver_id=dt.driver_id)
WHERE dt.END_DATE IS NULL
AND d.age=(select MAX(age) from drivers)
SELECT FIRST_NAME, LAST_NAME, AGE
FROM Drivers
JOIN Drivers_in_Teams ON Drivers.DRIVER_ID = Drivers_in_Teams.DRIVER_ID
WHERE Drivers_in_Teams.END_DATE IS NULL
ORDER BY AGE DESC
這應該將兩個表連接在一起,每個表上都有DRIVER_ID
,然后僅顯示NULL
記錄,我認為這是您END_DATE
字段中的“-”。
這應該可以解決問題:
-- get the data you want
SELECT first_name, last_name, age FROM drivers d
WHERE d.age = (
-- get the max age from drivers still actives
SELECT MAX(age) FROM driver WHERE driver_id IN (
-- get drivers still active
SELECT drive_id FROM drivers_in_teams WHERE end_date IS NULL
) x
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.