Autor Zpráva
Tonny
Profil
Zdravím,
řeším problém s vytvářením žebříčku pro zobrazení průběžného pořadí v horolezecké soutěži:

Mám dvě tabulky: uzivatele a denicek

V deníčku může mít každý uživatel 0 - hodně záznamů, které (krom jiných parametrů) mají i svou hodnotu v bodech (např. 931).

Já potřebuji sestavit žebříček z těchto záznamů a to následujícím způsobem:
Na prvním místě bude uživatel, u kterého je nejvyšší součet jeho prvních 10 záznamů (s nejvíce body) v tabulce denicek.

Příklad:
+----------------+-------------+
| uzivatel_jmeno | zaznam_body |
+----------------+-------------+
| Pepa           |         100 |
| Pepa           |         200 |
| Pepa           |         300 |
| Franta         |          10 |
| Franta         |          20 |
| Franta         |         500 |
+----------------+-------------+
Výstup:
+----------+-------+
| uzivatel | Top10 |
+----------+-------+
| Pepa     |   600 |
| Franta   |   530 |
+----------+-------+

(V ideálním případě bych potřeboval do třetího sloupečku vypsat ještě třeba jména těch záznamů, který se sečetly, ale to je detail, kterej kdyžtak dořeším jinak).

________

Teď to řeším pomocí nějaké temporary table a krom toho že je to velmi časově náročené mi to ani nefunguje docela správně (nejsem si úplně jistej, kde je chyba)
________


Díky moc za nápady ;)
Chuchycek
Profil
Snad je to dobře.
SELECT
    uzivatel_jmeno,
    (SELECT 
        SUM(zaznam_body)
        FROM (SELECT 
                    zaznam_body 
                FROM denicek
                WHERE uzivatel = uzivatel_jmeno
                ORDER BY zaznam_body DESC 
                LIMIT 10) AS pocet) AS top10
FROM uzivatele
ORDER BY top10 DESC
pcmanik
Profil
Chuchycek:
SELECT uzivatel_jmeno AS uzivatel, SUM(zaznam_body) AS Top10
FROM uzivatele u
LEFT JOIN denicek d ON u.id = d.uzivatel_id
GROUP BY uzivatel_jmeno
ORDER BY Top10 DESC
LIMIT 10

Dufam ze pri užívateľoch máte aj id a nielen mená.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: