Witam,
W twoim zapytaniu masz dwa błędy:
SELECT
idzaw,
nazwisko,
imie,
skrotkl, -- BRAK PRZECINKA
(SELECT sinclair FROM wyniki ORDER BY sinclair DESC LIMIT 10) -- TO ZAPYTANIE ZWRÓCI CI WIĘCEJ NIŻ JEDEN WYNIK, WIĘC JEST BŁĘDNE - MOŻE BYĆ TYLKO DOPASOWANIE 1 = 1
FROM wyniki
WHERE (rok) = '2011' AND (plec) = 'm' GROUP BY idzaw
Aby zrobić sortowanie przed grrupowaniem będziesz musiał skorzystać z tabeli pomocniczej.
Mając tabelę:
CREATE TABLE wyniki
(
idzaw int,
nazwisko varchar(50),
imie varchar(50),
skrotkl varchar(40),
sinclair varchar(20),
rok int,
plec char
)
z danymi:
INSERT INTO wyniki VALUES(1,'test1','test1','t1','st1',2011,'m');
INSERT INTO wyniki VALUES(2,'test2','test2','t2','st4',2011,'m');
INSERT INTO wyniki VALUES(3,'test3','test3','t3','st3',2011,'m');
INSERT INTO wyniki VALUES(4,'test4','test4','t4','st2',2011,'m');
INSERT INTO wyniki VALUES(3,'test3','test3','t3','st8',2011,'m');
Tworzysz sobie tabelę pomocniczą z kolejnością sortowania:
CREATE TABLE kolejnosc (
id int AUTO_INCREMENT PRIMARY KEY,
sinc varchar(20)
)
i wrzucasz do niej dane z twojego zapytania:
INSERT INTO kolejnosc (sinc)
SELECT sinclair FROM wyniki ORDER BY sinclair DESC LIMIT 10
W zapytaniu głównym pobierasz już interesujące cię dane z sortowaniem wg. id tabeli pomocniczej:
SELECT
idzaw,
nazwisko,
imie,
skrotkl
FROM
wyniki w
JOIN kolejnosc k ON k.sinc = w.sinclair
WHERE
(rok) = '2011'
AND (plec) = 'm'
GROUP BY idzaw
ORDER BY k.id
Nie wiem czy dokładnie o takie cos ci chodziło - jeżeli nie to może przynajmniej przybliży cię do celu