Autor Zpráva
table
Profil *
Ahoj všem,
potřeboval bych poradit s výpisem z databáze.
Na screenu je vidět obsah tabulky z db: http://2imgs.com/2i/i/51a0c9a5/29e6efd024c51476a3981205015ec171/fa496b4192.f.png
Jsou tam uložené statistiky ze zápasu.
Nyní mám tento kod:
$query="SELECT * FROM playerstaty WHERE datum = ( SELECT datum FROM playerstaty WHERE confid=$confid  ORDER BY datum DESC LIMIT 1 ) AND Pos='Player'  ";
$result = mysql_query($query) or die(Mysql_error());
While($results=MySQL_Fetch_Assoc($result))
{
Vypisuje údaje z db podle poslední uložených statistik.
Co bych potřeboval je to aby to vypisovalo poslední uložené statistiky jako doposud ale jen jednoho týmu.
Budu vděčný za každou radu


Radši sem vložím ten obrázek takto:
S3ky
Profil
Screen je nefunkční.
Tori
Profil
table:
Tipuju něco takového: SELECT * FROM playerstaty WHERE id = (SELECT id FROM playerstaty WHERE confid = $confid AND team_id = $idTymu ORDER BY datum DESC LIMIT 1) AND Pos='Player' - změněné části jsou zvýrazněny, doplňte si správné názvy sloupců. Pokud každý řádek tabulky nemá svoje ID, bude potřeba to asi spojit na základě datumu + ID týmu.
table
Profil *
Děkuji za rady, vyřešil jsem to trochu jinak a to tak že vždy je v každém týmu 18 hráčů, takže jsem omezil výpis na 18 řádků.
Viz.:$query="SELECT * FROM playerstaty WHERE datum = ( SELECT datum FROM playerstaty WHERE confid=$confid ORDER BY datum DESC LIMIT 1 ) AND Pos='Player' order by Team ASC Limit 18 ";

Teď bych potřeboval ještě poradit jak vypsat starší příspěvky podle datumu.
Teď se mi vypisuje 18 řádků z posledního zápisu.
A já bych potřeboval vypsat 18 řádků z předešlého zápisu.
Těch zápisu tam samozřejmě můžou být stovky, takže ORDER BY datum ASC použít nemohu.
Zkoušel jsem použít OFFSET 1 viz. kod: $query="SELECT * FROM playerstaty WHERE datum = ( SELECT datum FROM playerstaty WHERE confid=$confid ORDER BY datum DESC LIMIT 1 OFFSET 1) AND Pos='Player' order by Team ASC Limit 18 ";
Ale nefunguje to.
Děkuji za radu.
Tori
Profil
Asi chybí tohle: SELECT * FROM playerstaty WHERE datum = ( SELECT DISTINCT datum FROM playerstaty WHERE confid=$confid ORDER BY datum DESC LIMIT 1 OFFSET 1) AND Pos='Player' order by Team ASC Limit 18
table
Profil *
Vyzkouším a dám vědět jestli to pomohlo.
Zatím díky
table
Profil *
Tori
Tak ti mockrát děkuji, pomohlo mi to, ještě jednou díky.
Ještě bych měl jeden dotaz snad už poslední.

Potřeboval bych poradit jak spojit 2 tabulky dohromady a následně vypsat celý název týmu.
Přikládám screeny tabulek v db.
Do tabulky teamstats se ukládají statistiky týmu, název týmu(Team) je psaný ve zkratce.
V tabulce zkratky jsou už zmíněné zkratky a u nic celé názvy týmů.
Potřeboval bych aby při výpisu statistiky z tabulky teamstats se to podívalo do tabulky zkratky a pokud by to našlo zkratku ve sloupci zkratka celý název týmu.
Momentálně vypisuji obsah tabulky teamstats takto:
$query="SELECT * FROM teamstats WHERE datum = ( SELECT datum FROM teamstats WHERE confid=$confid  ORDER BY datum DESC LIMIT 1 ) limit 1";
$result = mysql_query($query) or die(Mysql_error());
Nyní to vypíše tým právě ze zkratkou, já potřebuji aby to vypsalo celý název týmu. Doufám že jsem to napsal správně a bude to k pochopení.
Děkuji předem.

Tori
Profil
Nějak takhle:
SELECT ts.*, IFNULL(z.celyNazev, ts.team) AS nazevTymu
FROM teamstats ts
LEFT JOIN zkratky z ON z.zkratka = ts.team
WHERE ts.datum = ( SELECT datum FROM teamstats WHERE confid=$confid  ORDER BY datum DESC LIMIT 1 ) 
LIMIT 1
Podmínka s IFNULL vrací buď název týmu (pokud existuje odpovídající zkratka v tabulce zkratky) anebo jeho zkratku. ts a z za názvy tabulek jsou aliasy (aby se nemusel pokaždé psát celý dlouhý název tabulky).
table
Profil *
Tori:
Děkuji mnohokrát.

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: