Portál AbcLinuxu, 8. května 2025 08:17

Dotaz: UNION pro neznamy pocet tabulek

10.1.2011 19:22 HonzaZ
UNION pro neznamy pocet tabulek
Přečteno: 213×
Odpovědět | Admin
Ahoj,

chtel bych vas poprosit o radu. Mam tabulku sportovnich vykonu zavodniku na ruznych zavodech. Chci porovnavat kvalitu zavodu. A to tak, ze vezmu vzdy 10 nejlepsich vykonu z daneho zavodu a udelam prumer. Potrebuji to udelat v MySQL, tudiz nelze pouzit LIMIT&IN poddotaz.

Schematicky: Takto zobrazim 10 nejlepsich vykonu ze zavodu 1234:

SELECT cas, id_zavodu FROM vykony WHERE id_zavodu=1234 ORDER BY cas LIMIT 10;

Prumer udelam jednoduse (o to tady ani nejde, ale pro informaci):

SELECT AVG(cas) FROM (tenPredchoziDotaz) tab;

Jde mi o to udelat tohle (tj. ziskat tabulku obsahujici z kazdeho zavodu 10 nejlepsich vykonu):

SELECT cas, id_zavodu FROM vykony WHERE id_zavodu=1 ORDER BY cas LIMIT 10
UNION
SELECT cas, id_zavodu FROM vykony WHERE id_zavodu=2 ORDER BY cas LIMIT 10
UNION
...

Asi bych mel nejak pouzit cyklus, ale zadne reseni jsem nenasel. Nebo to jde cele i jinak a lepe?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.1.2011 21:36 Jakub Hajek
Rozbalit Rozbalit vše Re: UNION pro neznamy pocet tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nektere rdbs na to maji analyticke funkce.

Mysql zda se nema, ale tohle by ti mohlo pomoct.

GeoRW avatar 11.1.2011 17:56 GeoRW | skóre: 13 | blog: GeoRW | Bratislava
Rozbalit Rozbalit vše Re: UNION pro neznamy pocet tabulek
Odpovědět | | Sbalit | Link | Blokovat | Admin
asi bude najjednoduchsie si na to napisat procku (script) a ten select (prip. insert) dat do cyklu; neviem ako v MySQL, ale v Oracle by to vyzeralo nejak takto:
BEGIN

  FOR i IN (SELECT DISTINCT id_zavodu FROM vykony)
  LOOP
    INSERT INTO pomocna_tabula
    SELECT cas, id_zavodu 
    FROM vykony
    WHERE id_zavodu = i
    ORDER BY cas
    LIMIT 10;
  END LOOP;

END;
PS: LIMIT Oracle nepozna, takze by ten select bol trochu zlozitejsi, ale nechce sa mi to prepisovat :-)
"This is to be taken with a grain of salt." ACBF - Advanced Comic Book Format

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.