Trochę nie rozumiem tego po dłuższej analizie. Zaczynając od końca:
Kopiuj
SELECT Rok, Id_kierowcy, SUM(Punkty) AS pkt
FROM Wyniki
INNER JOIN Wyscigi ON Wyniki.Id_wyscigu = Wyscigi.Id_wyscigu
GROUP BY rok, id_kierowcy
Bierzemy rok, id_kierowcy, suma z punktów łączymy dwie tabele wyniki i wyscigi na podstawie id wyscigu i grupujemy przez rok i id_kierowcy.
Kopiuj
(
SELECT rok, MAX(pkt) AS pm
FROM
(
SELECT Rok, Id_kierowcy, SUM(Punkty) AS pkt
FROM Wyniki
INNER JOIN Wyscigi ON Wyniki.Id_wyscigu = Wyscigi.Id_wyscigu
GROUP BY rok, id_kierowcy
) GROUP BY rok
Z tej tabeli co przed chwilą opisałem bierzemy rok i największą wartość punktów, nazywamy ją jako "pkt" i grupujemy po roku. Aktualnie mamy wszystkie lata i wartość z maksymalną ilością punktów dla nich.
Kopiuj
(
SELECT Rok, Id_kierowcy, SUM(Punkty) AS pkt
FROM Wyniki
INNER JOIN Wyscigi ON Wyniki.Id_wyscigu = Wyscigi.Id_wyscigu
GROUP BY rok, id_kierowcy
) AS i
INNER JOIN
Do tej tabeli co wyżej opisałem dołączamy tą z której wyciągamy rok, id_kierowcy i sume punktów grupujemy po roku i id i zapisujemy ją jako "i". Tutaj trochę nie rozumiem bo przecież wcześniej taką samą tabele stworzyliśmy i wyciągnęliśmy z niej rok i max pkt. Chodzi o to że w kolejnym punkcie wyciągamy imie, nazwisko itd. na podstawie tej tabeli z id?
Kopiuj
AS m ON(i.pkt = m.pm) AND (i.rok = m.rok))
INNER JOIN Kierowcy ON i.Id_kierowcy = Kierowcy.Id_kierowcy
WHERE i.rok IN(2000, 2006, 2012);
Trochę nie czaje tego
Kopiuj
AS m ON(i.pkt = m.pm) AND (i.rok = m.rok))
Nie spotkałem się z takim zapisem jeszcze bo to w sumie pierwszy tydzie nauki. Prosiłbym o drobna pomoc.