簡體   English   中英

MySQL:如何根據另一個表的結果選擇一個值(日期)並將其包含在所述結果中?

[英]MySQL: How can I select a value (date) based on a result from another table and include it in said result?

我有以下MySQL表(簡體)

DRIVER (D)
----------
id (PK)
name

RACE (RA)
---------
id (PK)
date

RESULT (RE)
-----------
id (PK)
raceid (FK -> RACE.id)
driverid (FK -> DRIVER.id)
bestRound
averageRound

我希望能夠列出所有驅動程序及其numRaces,firstRace,lastRace,bestRound,bestAverageRound以及其bestRound和bestAverageRound發生的日期。 我對最后兩個日期,bestRound和bestAverageRound的日期有疑問。

這是我到目前為止的內容:

SELECT D.name, COUNT(DISTINCT RE.raceid) AS numRaces, min(RA.date) AS firstRace,
max(RA.date) AS lastRace, min(RE.bestRound) AS bestRound,
min(RE.averageRound) AS bestAverageRound 
FROM DRIVER D
JOIN RESULT RE ON RE.driverid = D.id
JOIN RACE RA ON RA.id = RE.raceid
GROUP BY D.id
ORDER BY D.name

這工作正常。 但是,如何繼續從RACE表中選擇發生bestRound和bestAverageRound的日期呢? 謝謝你的時間。

試試這個解決方案:

SELECT 
    a.*, b.date AS bestRoundDate, c.date AS bestAverageRoundDate
FROM
(
    SELECT 
        d.id, 
        d.name,
        COUNT(DISTINCT re.raceid) AS numRaces,
        MIN(ra.date) AS firstRace,
        MAX(ra.date) AS lastRace,
        MIN(re.bestRound) AS bestRound,
        MIN(re.averageRound) AS bestAverageRound
    FROM driver d
    INNER JOIN result re ON d.id = re.driverid
    INNER JOIN race ra ON re.raceid = ra.id
    GROUP BY d.id, d.name
) a
INNER JOIN
(
    SELECT aa.driverid, aa.bestRound, bb.date
    FROM result aa
    INNER JOIN race bb ON aa.raceid = bb.id
) b ON a.id = b.driverid AND a.bestRound = b.bestRound
INNER JOIN
(
    SELECT aa.driverid, aa.bestAverageRound, bb.date
    FROM result aa
    INNER JOIN race bb ON aa.raceid = bb.id
) c ON a.id = c.driverid AND a.bestAverageRound = c.bestAverageRound
ORDER BY
    a.name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM