SELECT z kolumnami z kilku tabel

0

Wydawało mi się, że już ten select załatwiłem i nawet byłem trochę dumy, że udało mi się to samemu "rozwalić", ale chyba się trochę pośpieszyłem..

Mam takie zapytanie:

SELECT idUzytkownik, idKonkurencjiPerZawody, wynik FROM wyniki_2012 WHERE idKonkurencjiPerZawody = 
(SELECT kpz.idKonkurencjiPerZawody
FROM konkurencjeperzawody kpz
INNER JOIN konkurencje k ON kpz.idKonkurencji = k.idKonkurencji 
INNER JOIN zawodynazwa zn ON kpz.idZawodyNazwa = zn.idZawodyNazwa
WHERE k.nazwaKonkurencji LIKE 'pistolet szyb%' && zn.nazwaZawody LIKE 'Ogólno%') ;

i z tego taki efekt (tabele):

idUzytkownika | idKonkurencjiPerZawody | wynik

2 | 3 | 35
2 | 3 | 99
1 | 3 | 19
1 | 3 | 27

I teraz próbuje uzystkać taki efekt aby tylko najwyższe wyniki zostały przekazane jakby wyżej... by następnie po idUzytkownik "połączyć" to z tabelą uzytkownicy i w konsekwencji wypisać imieUzytkownika, nazwiskoUzytkownka i najwyzsze wyniki..

Próbowałem coś takiego:
(ale tutaj przekłamane są najwyższe wyniki.. tzn. coś tam nie trybi..)

SELECT imieUzytkownika, nazwiskoUzytkownika, w.wynik, MAX(w.wynik) FROM uzytkownicy u, wyniki_2012 w WHERE u.idUzytkownik=w.idUzytkownik AND u.idUzytkownik IN (
SELECT idUzytkownik FROM wyniki_2012 WHERE idKonkurencjiPerZawody = 
(SELECT kpz.idKonkurencjiPerZawody
FROM konkurencjeperzawody kpz
INNER JOIN konkurencje k ON kpz.idKonkurencji = k.idKonkurencji 
INNER JOIN zawodynazwa zn ON kpz.idZawodyNazwa = zn.idZawodyNazwa
WHERE k.nazwaKonkurencji LIKE 'pistolet szyb%' && zn.nazwaZawody LIKE 'Ogólno%') 
GROUP BY idUzytkownik) GROUP BY nazwiskoUzytkownika;
0

coś takiego?

SELECT uzytkownicy.imieUzytkownika
	,uzytkownicy.nazwiskoUzytkownika
	,MAX(wyniki_2012.wynik)
FROM wyniki_2012
INNER JOIN konkurencjeperzawody
	ON wyniki_2012.idKonkurencjiPerZawody = konkurencjeperzawody.idKonkurencjiPerZawody
INNER JOIN konkurencje
	ON konkurencjeperzawody.idKonkurencji = konkurencje.idKonkurencji
INNER JOIN zawodynazwa
	ON konkurencjeperzawody.idZawodyNazwa = zawodynazwa.idZawodyNazwa
INNER JOIN uzytkownicy
	ON wyniki_2012.idUzytkownik = uzytkownicy.idUzytkownik
WHERE konkurencje.nazwaKonkurencji LIKE 'pistolet szyb%' 
	AND zawodynazwa.nazwaZawody LIKE 'Ogólno%' 
GROUP BY uzytkownicy.imieUzytkownika
	,uzytkownicy.nazwiskoUzytkownika
ORDER BY MAX(wyniki_2012.wynik)
	,uzytkownicy.nazwiskoUzytkownika
	,uzytkownicy.imieUzytkownika 
0

Po szybkich testach wygląda na to że działa! :)
Widzę, że zrobione to zostało praktycznie na samych JOIN-ach.. dobrze wiedzieć ;)

Dzieki!

0

Każde podzapytanie da się przerobić na "same joiny"

1 użytkowników online, w tym zalogowanych: 0, gości: 1