Zadejte hledaný výraz...

Zobrazení jen jednoho zápasu u každého týmu

Michales
verified
rating uzivatele
(5 hodnocení)
3. 4. 2016 13:28:03
Ahoj,
prosím o radu jak zobrazit jen jeden zápas u každého týmu.
Níže uvedený dotaz mi vypisuje všechny zápasy které danný tým odehrál. Já bych potřeboval zobrazit jen jeden zápas u každého týmu.
// Ziskani dat
$queryscores="SELECT CASE WHEN sportsdb_wins.winortie IN (2,5) THEN 'p' ELSE '' END AS priznak, sportsdb_wins.winid, sportsdb_wins.windate, sportsdb_wins.wintime, sportsdb_wins.rf, sportsdb_wins.ra, sportsdb_wins.winner,
sportsdb_wins.loser, sportsdb_wins.wincomments, sportsdb_wins.field, sportsdb_wins.winortie, sportsdb_teams2.teamname AS winningteam,
sportsdb_teams.teamname AS losingteam
FROM sportsdb_wins
LEFT JOIN sportsdb_teams ON sportsdb_wins.loser = sportsdb_teams.teamid
LEFT JOIN sportsdb_teams AS sportsdb_teams2 ON sportsdb_wins.winner = sportsdb_teams2.teamid
LEFT JOIN sportsdb_divs ON sportsdb_teams.teamdiv = sportsdb_divs.divid
LEFT JOIN sportsdb_divs AS sportsdb_divs2 ON sportsdb_teams2.teamdiv = sportsdb_divs2.divid
WHERE (sportsdb_divs.conference = $confid OR sportsdb_divs2.conference = $confid OR (sportsdb_wins.winconf = $confid AND (sportsdb_wins.loser = -1 OR sportsdb_wins.winner = -1)))AND sportsdb_divs.aktive = 1 AND sportsdb_wins.winortie != 3";
// Třídit podle týmu
if (isset($_POST) && $_POST != 'all') {
$teamtosort = intval($_POST);
$queryscores .= " AND (sportsdb_wins.winner = $teamtosort OR sportsdb_wins.loser = $teamtosort)";
}
$queryscores .= ' ORDER BY winid DESC ';
$resultscores=mysql_query($queryscores);
$numscores=mysql_num_rows($resultscores);
$html = ""; // hlavni HTML zasobnik
Křížová tabulka
Celý script
Nastíním více oč mi jde.
Nahoře chci mít čísla 1. 2. 3. 4.
Ty čísla pak předávat pomocí $_GET do proměnné kterou využít v sql dotazu přidáním LIMITU a OFFSETU ale netuším jak.
Prostě udělat přepínání mezi zápasy. Zobrazovat první, druhý, třetí a čtvrtý zápas po kliku na příslušné číslo.
Přes php mě nenapadá jak to udělat. Proto ten nápad že by to mohlo jít přes sql pomocí LIMIT a OFFSET
3. 4. 2016 13:28:03
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187251
Luděk Kvapil
verified
rating uzivatele
4. 4. 2016 10:34:23
SELECT winid FROM sportsdb_wins LIMIT 1;
// tohle zobrazí první řádek.. ale netuším, co to vlastně tam je za čísla..
Jak jsou ty zápasy číslované v tom sloupci winid?
Asi by bylo zajímavější:
SELECT * FROM sportsdb_wins WHERE winid = ''KLÍČ';
4. 4. 2016 10:34:23
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187250
Michales
verified
rating uzivatele
(5 hodnocení)
4. 4. 2016 10:37:36
Napsal siva01;1282232
SELECT winid FROM sportsdb_wins LIMIT 1
Nelze to spíše zakomponovat do stávajícho sql dotazu, než vytvářet další?
4. 4. 2016 10:37:36
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187249
Luděk Kvapil
verified
rating uzivatele
4. 4. 2016 10:40:07
Nejprve bych si otestovat, jak funguje ten druhý dotaz s WHERE a to jde pak vložit do tho dotazu $queryscores, kde už ta podmínka WHERE je, takže by se jen přidalo AND..
---------- Příspěvek doplněn 04.04.2016 v 10:40 ----------
Napsal Michales;1282233
Nelze to spíše zakomponovat do stávajícho sql dotazu, než vytvářet další?
Jde, ale nejprve je nutné zjistit, kde jsou ta data, která chci zobrazit :)
---------- Příspěvek doplněn 04.04.2016 v 10:43 ----------
$queryscores="SELECT CASE WHEN sportsdb_wins.winortie IN (2,5) THEN 'p' ELSE '' END AS priznak, sportsdb_wins.winid, sportsdb_wins.windate, sportsdb_wins.wintime, sportsdb_wins.rf, sportsdb_wins.ra, sportsdb_wins.winner,
sportsdb_wins.loser, sportsdb_wins.wincomments, sportsdb_wins.field, sportsdb_wins.winortie, sportsdb_teams2.teamname AS winningteam,
sportsdb_teams.teamname AS losingteam
FROM sportsdb_wins
LEFT JOIN sportsdb_teams ON sportsdb_wins.loser = sportsdb_teams.teamid
LEFT JOIN sportsdb_teams AS sportsdb_teams2 ON sportsdb_wins.winner = sportsdb_teams2.teamid
LEFT JOIN sportsdb_divs ON sportsdb_teams.teamdiv = sportsdb_divs.divid
LEFT JOIN sportsdb_divs AS sportsdb_divs2 ON sportsdb_teams2.teamdiv = sportsdb_divs2.divid
WHERE (sportsdb_divs.conference = $confid OR sportsdb_divs2.conference = $confid OR (sportsdb_wins.winconf = $confid AND (sportsdb_wins.loser = -1 OR sportsdb_wins.winner = -1)))AND sportsdb_divs.aktive = 1 AND sportsdb_wins.winortie != 3 AND sportsdb_wins.winid = 'klíč'";
4. 4. 2016 10:40:07
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187248
Michales
verified
rating uzivatele
(5 hodnocení)
4. 4. 2016 10:50:15
$queryscores="SELECT CASE WHEN sportsdb_wins.winortie IN (2,5) THEN 'p' ELSE '' END AS priznak, sportsdb_wins.winid, sportsdb_wins.windate, sportsdb_wins.wintime, sportsdb_wins.rf, sportsdb_wins.ra, sportsdb_wins.winner,
sportsdb_wins.loser, sportsdb_wins.wincomments, sportsdb_wins.field, sportsdb_wins.winortie, sportsdb_teams2.teamname AS winningteam,
sportsdb_teams.teamname AS losingteam
FROM sportsdb_wins
LEFT JOIN sportsdb_teams ON sportsdb_wins.loser = sportsdb_teams.teamid
LEFT JOIN sportsdb_teams AS sportsdb_teams2 ON sportsdb_wins.winner = sportsdb_teams2.teamid
LEFT JOIN sportsdb_divs ON sportsdb_teams.teamdiv = sportsdb_divs.divid
LEFT JOIN sportsdb_divs AS sportsdb_divs2 ON sportsdb_teams2.teamdiv = sportsdb_divs2.divid
WHERE (sportsdb_divs.conference = $confid OR sportsdb_divs2.conference = $confid OR (sportsdb_wins.winconf = $confid AND (sportsdb_wins.loser = -1 OR sportsdb_wins.winner = -1)))AND sportsdb_divs.aktive = 1 AND sportsdb_wins.winortie != 3 AND sportsdb_wins.winid ='1'";
Nevypíše bohužel vůbec nic.
4. 4. 2016 10:50:15
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187247
Luděk Kvapil
verified
rating uzivatele
4. 4. 2016 10:56:45
A jaký zápas má winid 1? Existuje vůbec takový záznam.. Čistě teoreticky ano, ale co když není zrovna aktivní (tzn. má sportsdb_divs.aktive = 0). Je nutný se mrknout na ten sloupec winid, co je tam za data. Vybrat nějaký poslední zápas, který je aktivní a splňuje prostě všechny podmínky WHERE.
---------- Příspěvek doplněn 04.04.2016 v 11:00 ----------
viz.
Z toho je jasný, že to winid definuje zápas. Jen nevím, jestli z toho jde poznat, kolikátý byl v pořadí. Ale když už umím identifikovat id zápasu, tak někde musí jít dohledat, jaké měl pořadí.. Prostě procházat tabulky a koukat, kde jsou ta data zapsaná. Klíč bude to winid.
4. 4. 2016 10:56:45
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187246
Michales
verified
rating uzivatele
(5 hodnocení)
4. 4. 2016 11:06:05
Napsal siva01;1282244
A jaký zápas má winid 1? Existuje vůbec takový záznam.. Čistě teoreticky ano, ale co když není zrovna aktivní (tzn. má sportsdb_divs.aktive = 0). Je nutný se mrknout na ten sloupec winid, co je tam za data. Vybrat nějaký poslední zápas, který je aktivní a splňuje prostě všechny podmínky WHERE.
---------- Příspěvek doplněn 04.04.2016 v 11:00 ----------
viz.
Z toho je jasný, že to winid definuje zápas. Jen nevím, jestli z toho jde poznat, kolikátý byl v pořadí. Ale když už umím identifikovat id zápasu, tak někde musí jít dohledat, jaké měl pořadí.. Prostě procházat tabulky a koukat, kde jsou ta data zapsaná. Klíč bude to winid.
Přidám screen tabulky. Protože ve winid je jedinečné číslo které nejde po sobě. Není tak možné podle něho určit pořadí.
http://www.jpeg.cz/images/2016/04/04/lLM4.png
4. 4. 2016 11:06:05
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187245
Luděk Kvapil
verified
rating uzivatele
4. 4. 2016 11:14:40
V té křížové tabulce pořadí je, takže jak se to generuje tam?
4. 4. 2016 11:14:40
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187244
Michales
verified
rating uzivatele
(5 hodnocení)
4. 4. 2016 11:15:51
Napsal siva01;1282249
V té křížové tabulce pořadí je, takže jak se to generuje tam?
Řazení jako takové není, týmy se řadí podle názvu týmu
4. 4. 2016 11:15:51
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187243
Luděk Kvapil
verified
rating uzivatele
4. 4. 2016 11:18:46
V tom PHP to začíná na řádku 122. Tam je smyčka, že se mají načítat všechny zápasy. Tak místo smyčky stačí vypsat ten první.
---------- Příspěvek doplněn 04.04.2016 v 11:19 ----------
A číslo zápasu je $c
4. 4. 2016 11:18:46
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187242
Michales
verified
rating uzivatele
(5 hodnocení)
4. 4. 2016 11:22:18
Napsal siva01;1282251
V tom PHP to začíná na řádku 122. Tam je smyčka, že se mají načítat všechny zápasy. Tak místo smyčky stačí vypsat ten první.
---------- Příspěvek doplněn 04.04.2016 v 11:19 ----------
A číslo zápasu je $c
Ano vím že zápasy se počítají zde:
for($c = 0; $c < count($common_matches_id); $c++){
// id zapasu
$match_id = $common_matches_id;
Ale netuším jak to opravit abych si mohl zobrazit jen zápasy které chci. Buď první nebo třeba čtvrtý.
4. 4. 2016 11:22:18
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187241
Michales
verified
rating uzivatele
(5 hodnocení)
8. 4. 2016 17:01:49
Stále jsem se nedostal ke správnému řešení. Prosím o pomoc.
8. 4. 2016 17:01:49
https://webtrh.cz/diskuse/zobrazeni-jen-jednoho-zapasu-u-kazdeho-tymu#reply1187240
Pro odpověď se přihlašte.
Přihlásit