Autor | Zpráva | ||
---|---|---|---|
table Profil * |
#1 · Zasláno: 25. 5. 2013, 15:29:17 · Upravil/a: table
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)) { 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 |
#2 · Zasláno: 25. 5. 2013, 19:48:56
Screen je nefunkční.
|
||
Tori Profil |
#3 · Zasláno: 25. 5. 2013, 20:04:11
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 * |
#4 · Zasláno: 25. 5. 2013, 20:22:08
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 |
#5 · Zasláno: 25. 5. 2013, 21:07:53
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 * |
#6 · Zasláno: 25. 5. 2013, 21:26:45
Vyzkouším a dám vědět jestli to pomohlo.
Zatím díky |
||
table Profil * |
#7 · Zasláno: 26. 5. 2013, 11:47:35
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()); Děkuji předem. |
||
Tori Profil |
#8 · Zasláno: 26. 5. 2013, 20:32:46
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 |
||
table Profil * |
#9 · Zasláno: 27. 5. 2013, 09:39:48
Tori:
Děkuji mnohokrát. |
||
Časová prodleva: 11 let
|
0