Autor | Zpráva | ||
---|---|---|---|
Míra Profil * |
#1 · Zasláno: 14. 5. 2007, 11:57:05
Zdravím,
v jednom příspěvku jsem našel radu od Kajmana, jak sčítat data z databázové tabuky podle duplicitních záznamů. Zkoušel jsem si ji zabudovat do mého skriptu, ale něco mám špatně. Potřebuji sečíst data ze sloupce "body" podle "družstev" a "ročníků" Mám tabulky vysledky, druzstva, rocniky v tabulce vysledky jsou např. idv, iddruzstvo, idrocnik, body 1 1 1 10 2 2 1 15 3 2 1 10 4 1 2 5 v tabulce druzstva jsou idd, druzstvo 1 Roudnice 2 Litoměřice v tabulce rocniky jsou ids, rocnik 1 2006 2 2007 Potřebuji sečíst body tak, aby se při otevření jednotlivého ročníku zobrazil u každého družstva celkový počet bodů dosažený v tom určitém ročníku Příklad: otevřu stránku s ročníkem 2006 (ids=1) a na ní se objeví tabulka Roudnice (iddruzstvo=1) 10 bodů Litoměřice (iddruzstvo=2) 25 bodů Mně se pořád sčítají všechny body ze všech ročníků dohromady: $celkem = mysql_query("select count(v.idrocnik), sum(v.body) body, d.druzstvo as druzstvo from vysledky as v,druzstva as d,rocniky as r where (v.iddruzstvo=d.idd) and (v.idrocnik=r.ids) group by d.idd order by body desc"); Můžete poradit? Díky |
||
MzM Profil |
#2 · Zasláno: 14. 5. 2007, 12:36:28 · Upravil/a: MzM
select
r.rocnik, sum(v.body) body, d.druzstvo from vysledky as v join druzstva as d v.iddruzstvo=d.idd join rocniky as r v.idrocnik=r.ids group by d.idd, r.ids order by body desc nevyzkoušené, ale mohlo by fungovat. |
||
Míra Profil * |
#3 · Zasláno: 14. 5. 2007, 13:08:56
Děkuji za radu, ale jelikož s php začínám a "join" vidím poprvé, můžeš mi prosím napsat jakou to má syntaxi? Vyhazuje mi to chybu s SQL syntaxi. Díky
|
||
Míra Profil * |
#4 · Zasláno: 14. 5. 2007, 13:15:57
Tak jsem něco zkusil a už mi to rozděluje součty podle ročníků, ale další problém je v tom, že mi to vyhodí dvounásobek součtu:
$celkem = mysql_query("select count(v.idrocnik), sum(v.body) body, d.druzstvo as druzstvo from vysledky as v,druzstva as d,rocniky as r where (v.iddruzstvo=d.idd) and and v.idrocnik='".$GLOBALS["rocnik"]."' group by d.idd order by body desc"); |
||
Míra Profil * |
#5 · Zasláno: 14. 5. 2007, 13:22:34
Tak ještě změna přidal jsem ještě order by r.ids a vypisuje mi to jeden údaj dvakrát
$celkem = mysql_query("select count(v.idrocnik), sum(v.body) body, d.druzstvo as druzstvo from vysledky as v,druzstva as d,rocniky as r where (v.iddruzstvo=d.idd) and and v.idrocnik='".$GLOBALS["rocnik"]."' group by d.idd,r.ids order by body desc"); |
||
Míra Profil * |
#6 · Zasláno: 14. 5. 2007, 14:13:34
Tak už to mám :) přidal jsem ještě v.idrocnik=r.ids
$celkem = mysql_query("select count(v.idrocnik), sum(v.body) body, d.druzstvo as druzstvo from vysledky as v,druzstva as d,rocniky as r where (v.iddruzstvo=d.idd) and (v.idrocnik=r.ids) and v.idrocnik='".$GLOBALS["rocnik"]."' group by d.idd,r.ids order by body desc"); Můžete to tu zavřít, ať už tady nespamuju ;) |
||
MzM Profil |
#7 · Zasláno: 15. 5. 2007, 13:36:57 · Upravil/a: MzM
ten join je takové (podle mě) zpřehlednění, pravděpodobně se pak selecty lépe optimalizují a jsou rychlejší. Např
select * from a, b where a.id = b.fid je to samé jako select * from a join b on a.id = b.fid --- join pak má ještě používané varianty (left join, right join) např select * from a left join b on a.id = b.fid odpovídá select * from a, b where a.id = b.fid or b.fid is null atp zbytek viz google a standardy sql např http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0