Subquery-t vagy mást haszaljak?
Hali!
A gondom a következő:
Egy ranglistát szeretnék elkészíteni a következő feltételekkel:
az utolsó 3 pontszerző versenyt kell kiválasztanom elöször kategóriánként majd indulónként végül verseny dátum szerint növekvő sorrendben.
Ha simán az összes versenyre kérdezem le akkor valami ilyesmit kapok:
Ezt próbáltam, de erre azt kapom hogy nem támogatja a 4.1es mysql a LIMIT-et..Megtudom valahogy máshogy odldani a dolgot?
Ill egy másik kérdés...Ezzel megkapom indulónként a legjobb pontszámot.. van rá lehetőség hogy a legjobb 4 pontszámot kapjam meg?
85, versenyzo1
helyett -> 85, 69, 56, verenyzo1 et kapjam meg...
köszi Tomi
■ A gondom a következő:
Egy ranglistát szeretnék elkészíteni a következő feltételekkel:
az utolsó 3 pontszerző versenyt kell kiválasztanom elöször kategóriánként majd indulónként végül verseny dátum szerint növekvő sorrendben.
Ha simán az összes versenyre kérdezem le akkor valami ilyesmit kapok:
kat1, versenyzo1, date1, hely, pont
kat1, versenyzo1, date2, hely, pont
kat1, versenyzo1, date3, hely, pont
kat1, versenyzo2, date1, hely, pont
kat1, versenyzo3, date1, hely, pont
kat2, versenyzo1, date1, hely, pont
kat1, versenyzo1, date2, hely, pont
kat1, versenyzo1, date3, hely, pont
kat1, versenyzo2, date1, hely, pont
kat1, versenyzo3, date1, hely, pont
kat2, versenyzo1, date1, hely, pont
Ezt próbáltam, de erre azt kapom hogy nem támogatja a 4.1es mysql a LIMIT-et..
SELECT * FROM eredmeny
WHERE verseny_date IN
(SELECT date FROM verseny ORDER BY date DESC LIMIT 3)
ORDER BY kat, versenyzo, date
Ill egy másik kérdés...
SELECT MAX(pont) max_pont, versenyzo FROM eredmeny GROUP BY versenyzo
85, versenyzo1
helyett -> 85, 69, 56, verenyzo1 et kapjam meg...
köszi Tomi
Miért kell subquery?
és azt hogy?
Az utolsó 3 dátum kiválasztásához hogy tudnám behatárolni, amikor nem tudom azt az alsó dátum korlátot ami után lezajlott a 3.(mai naptól legtávolabbik) esemény?!
Ha pedig a másik lekérdezésre írtad (4 legjobb pontszám lekérdezése)..., akkor ott is hasonló a problémám... nem tudom hogy mi az alsó határ.. és lehet hogy 5 de az is lehet hogy csak 2 versenyen indult valaki...
Group by
kérdés
Azért kérdezem, mert a szöveges leírás alapján az elsőre tippelnék ("az utolsó 3 _pontszerző_ verseny"), míg az SQL próbálkozás alapján a másodikra.
És egy másik kérdés: egy napon csak egy verseny van, ugye? Tehát a date mező egyértelműen azonosítja a verseny tábla egy rekordját?
pontosítás
pontszerző verseny = országos; nem pontszerző = területi
Vagyis az utolsó 3 verseny ami a versenyek táblában van, vagyis lehet hogy egy adott versenyző csak 1 versenyen indult a 3 utolsóból.
Másik kérdésedre: egy nap csak 1db pontszerző verseny lehet, vagyis a dátum egyértelműen beazonosítja (de minden táblában van id mező is)
Most próbálok egy tömb átrendezést, egy 2dimenziós tömbbe fogom belerakni valahogy igy:
De ezzel már menni fog a soronkénti kiiratás, most már csak az 'ossz_p' alapján kell rendeznem az elsődimenziót.
4.1 mysqlben nincs subquery
I)
A mysql 4.1-ben a subquery a probléma, nem a limit (sajna), tehát ez nem fog menni.
II)
Ha jól értem, ez kellene:
Versenyzőnként a négy legjobb pontot nem tudom, hogy lehetne egy lekéréssel kiszedni mysql 4.1-ben... (az 5-ösben sem tudom konkrétan, de ott elképzelhetőnek tartom)
Barna
de van
pont 4.1-től van:
http://dev.mysql.com/doc/refman/4.1/en/subqueries.html
igazad van
http://dev.mysql.com/doc/refman/4.1/en/subqueries.html
most hogy is van?