Autor Zpráva
Miri
Profil *
Ahoj, mám takovýto dotaz
    SELECT
        idclen,jmeno, prijmeni, cisloDresu, count(zg1.gol) AS celkemG, count(zg2.asistence) AS celkemA
    FROM
        clen
    .
    .
    .
    .
    .
    LEFT JOIN
        zapasgol AS zg1 on zg1.zapascast_idzapascast = zapascast.idzapascast and zg1.gol = clen.idclen 
    LEFT JOIN
        zapasgol AS zg2 on zg2.zapascast_idzapascast = zapascast.idzapascast and zg2.asistence = clen.idclen    
    GROUP BY
        idclen    

a rád bych dosáhl toho aby mi COUNT zg1 spočítal všechny goly z zapasgol a COUNT zg2 spočítal všechny asistence, problém nastává v tom že pokud jsou v tabulce zapasgol záznamy s goly a asistencema, tak se mi goly a asistence násoběj.

příklad (člen dá 3 goly a 0 asistencí - vše je OK , člen dá 3 goly a 1 asistenci - vypíše 3+3, člen dá 3 goly a 2 asistence - vypíše 6+6)

Nevíte prosím někdo jak docílit toho aby se mi goly a asistence sčítali zvlášt ?

Předem díky za odpověd Míra
Kajman
Profil
Např. count(distinct zg1.id_z_teto_tabulky), případně připojit jednotlivě až výsledky groupů na oněch tabulkách.

Taky by se daly připojit všechny góly v zápase a místo count použít sum(zg1.gol = clen.idclen), ale to asi nebude svižnější.
Miri
Profil *
Super funguje to, jen je to šíleně pomalý.. jak by se připojily výsledky groupů?
Kajman
Profil
Miri:
jen je to šíleně pomalý

Jaký je přesně celý dotaz? Jaký je explain a jaké tam jsou klíče?
Miri
Profil *
Je to trochu delší dotaz no.. přemýšlím jak by šel zkrátit, ale nějak se nechytám :-( ... tady je

SELECT
        idclen,jmeno, prijmeni, cisloDresu, tymynazev.nazev, count(distinct zg1.idzapasgol) AS celkemG, count(distinct zg2.idzapasgol) AS celkemA
    FROM
        clen
    JOIN
        clen_has_turnaj on clen_has_turnaj.clen_idclen = clen.idclen and clen_has_turnaj.turnaj_idturnaj = ".$_SESSION["udalost"]["turnaj"]."
       JOIN
        clen_has_tymy on clen_has_tymy.clen_idclen = clen.idclen ".$tymy."
    JOIN
        tymynazev on tymynazev.tymy_idtymy = clen_has_tymy.tymy_idtymy and tymynazev.jazyk_idjazyk
    JOIN
        zapas on zapas.turnaj_idturnaj = ".$_SESSION["udalost"]["turnaj"]."
    JOIN
        zapascast on zapascast.zapas_idzapas = zapas.idzapas
    LEFT JOIN
        zapasgol AS zg1 on zg1.zapascast_idzapascast = zapascast.idzapascast and zg1.gol = clen.idclen 
    LEFT JOIN
        zapasgol AS zg2 on zg2.zapascast_idzapascast = zapascast.idzapascast and zg2.asistence = clen.idclen
    GROUP BY
        idclen    
    ORDER BY
        count(distinct zg1.idzapasgol) DESC, count(distinct zg2.idzapasgol) DESC, tymynazev.nazev ".$limit."

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:

0