У меня эта сложная ситуация с несколькими JOINS, и я немного застрял.Получите MIN() при использовании double GROUP BY
У меня есть эти таблицы:
Расы
id | system_id | track | race_name | race_date
----------------------------------------------
1 | 3 | Track1| Name | 2016-10-07
2 | 5 | Track1| Name | 2016-10-08
3 | 6 | Track1| Name | 2016-10-09
Гонщики
id | system_id | racer_name | gender | bday | from | laps_completed
------------------------------------------------------------------------
1 | 10002 | Name1 | 1 | 1996-10-07|Place | 14
2 | 10003 | Name2 | 0 | 1996-10-08|Place2| 33
3 | 10004 | Name3 | 1 | 1996-10-09|Place3| 44
RACERS_RACES
id | race_id | racer_id
-----------------------
1 | 3 | 10002
2 | 5 | 10004
3 | 6 | 10003
LAPS
id | lap_time | system_id | racer_id
------------------------------------
1 | 25.33 | 1 | 10002
2 | 23.11 | 3 | 10003
3 | 28.55 | 7 | 10004
Я попытался сделать этот запрос:
SELECT r.system_id,MIN(l.lap_time) as fastest_lap,ra.racer_name,ra.racer_from,r.race_name,ra.laps_completed,r.race_date
FROM races r
LEFT JOIN racers_races rr ON r.system_id=rr.race_id
LEFT JOIN racers ra ON rr.racer_id=ra.system_id
LEFT JOIN laps l ON ra.system_id=l.racer_id
WHERE l.lap_time!=0
GROUP BY r.system_id,l.racer_id
ORDER BY l.lap_time ASCenter code here
Моя проблема, когда у меня есть несколько гонщиков у меня есть тот же самый быстрый круг для различных рас и оно не должно быть, что way.It должен вернуть мне самый быстрый кругом гонщика на определенной гонке.
Ссылка на sqlfiddle.
См http://meta.stackoverflow.com/questions/333952/why-should-i-provide- a-mcve-for-what-seem-to-me-to-be-a-very-simple-sql-query – Strawberry