mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-09-11 18:41:50 +00:00
Ein 5:5 ist eingetragen: das Signal "Ergebnis liegt vor" vom Punktestand loesen
Meldung von Sven (DTFB-IT): "Ist irgendwo zwischendurch ein 5:5 werden alle
Ergebnisse und Paarungen beim Speichern ab dort geloescht." Seine Vermutung
traf zu: teamspiel_*_punkte zaehlt nur ENTSCHIEDENE Saetze, und punkte == 0:0
gilt an mehreren Stellen als "nichts eingetragen". Wo Unentschieden normal
sind (Je-Satz-Modus, Satzergebnis-Erfassung), kollidiert das.
Gemessen an PRUEF Liga G (Modus 21, je Satz): eingetragen Spiel 1
"6:4 5:5 2:6 6:3", Spiel 2 "5:5 5:5", Spiel 3 "4:4 6:2 5:5 2:6" -- gespeichert
wurde nur Spiel 1. Spiel 2 ergibt Punkte 0:0, damit war die Behalte-Bedingung
(admin.php) und die do-while-Bedingung falsch, die Schleife endete, und
DELETE ... WHERE teamspiel_nummer >= $spiel_nr nahm Spiel 2 UND Spiel 3 mit.
Die falschen Gesamttore aus der Meldung sind eine Folge derselben Loeschung;
ohne komplett unentschiedenes Spiel stimmen sie exakt (47:42 = Handrechnung).
Ausserdem gemessen: eine Begegnung, deren Spiele ALLE unentschieden enden
(Begegnungspunkte 0:0), verschwand komplett aus der Tabelle -- die Mannschaft
zeigte danach "0 Siege, 0 Unentschieden, 1 Niederlage", Spielpunkte und Tore
der Begegnung fehlten. Grund: die Tabellenabfragen filtern Begegnungen mit
(heim_punkte != 0 OR gast_punkte != 0).
Behebung: ueberall dort, wo punkte != 0 als "es liegt ein Ergebnis vor"
dient, gilt zusaetzlich "ein Satzergebnis liegt vor" -- das Kriterium wird
erweitert, nie verengt:
- Speicherschleife adminSaveBegegnungSpielplan(): Behalte-Bedingung und
do-while zusaetzlich !empty($ergebnis_detailliert). Auf teamspiel-Ebene ist
ergebnis_detailliert das unmittelbare Zeugnis der Eingabe; es ist genau dann
gefuellt, wenn Satzergebnisse eingetragen wurden.
- Wiederherstellungs-Block fuer Zwischenergebnisse: Punkte werden nur noch
zurueckgeholt, wenn NEBEN 0:0 auch kein Satzergebnis gesendet wurde -- ein
live eingetragenes "5:5 5:5" ist eine Eingabe, keine Luecke.
- Tabellenabfragen (getTabelleSpieltag, teamstatistikAktualisieren samt
Buchholz-Paarungen): ausgetragen ist eine Begegnung mit punkte != 0 ODER
heim_tore IS NOT NULL. Auf Begegnungsebene gibt es kein ergebnis_detailliert;
heim_tore (Datenbankversion 123) wird beim Speichern genau dann gesetzt, wenn
Satzergebnisse vorliegen, und ist damit dort das eindeutige Signal.
- Spieltag-Ermittlung (tabelle(), teamstatistikAktualisieren): ein Spieltag
mit heim_spielpunkte 0:0 (Wertung "je Satz, Sieg 1": alle Spiele remis)
zaehlt ueber NOT ISNULL(heim_tore) trotzdem als ausgetragen.
Bestandsmodi aendern sich nicht: ausserhalb der Satzergebnis-Erfassung ist
bei "nicht eingetragen" auch kein Satzergebnis vorhanden (ergebnis_detailliert
leer, heim_tore NULL), das erweiterte Kriterium bleibt dort wirkungslos. Die
SQL-Zusaetze sind an $je_satz gebunden bzw. haengen an Spalten, die in
Bestandsdaten NULL sind; die von getTabelleSpieltag erzeugten Abfragen bleiben
fuer Nicht-Je-Satz-Modi byteidentisch (Query-Log-Vergleich wie bei 49ce079).
This commit is contained in:
@@ -11250,7 +11250,7 @@ function adminSaveBegegnungSpielplan(): void
|
||||
|
||||
if ($zwischenergebnis && $begegnung->verlegen_aktionen != $anzahl_historie && isset($spiele_nummern[$spiel_nr])) {
|
||||
$spiel = $spiele_nummern[$spiel_nr];
|
||||
if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0) {
|
||||
if ($spiel_heim_punkte == 0 && $spiel_gast_punkte == 0 && empty($ergebnis_detailliert)) {
|
||||
$spiel_heim_punkte = $spiel->teamspiel_heim_punkte;
|
||||
$spiel_gast_punkte = $spiel->teamspiel_gast_punkte;
|
||||
}
|
||||
@@ -11270,7 +11270,7 @@ function adminSaveBegegnungSpielplan(): void
|
||||
}
|
||||
}
|
||||
|
||||
if ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || ($zwischenergebnis && $spieler_angegeben)) {
|
||||
if ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || !empty($ergebnis_detailliert) || ($zwischenergebnis && $spieler_angegeben)) {
|
||||
$total_heim_punkte += $spiel_heim_punkte;
|
||||
$total_gast_punkte += $spiel_gast_punkte;
|
||||
|
||||
@@ -11325,7 +11325,7 @@ function adminSaveBegegnungSpielplan(): void
|
||||
$spiel_nr++;
|
||||
}
|
||||
|
||||
} while (isset($spieltypen[$spiel_nr - 1]) && ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || ($zwischenergebnis && $spieler_angegeben)));
|
||||
} while (isset($spieltypen[$spiel_nr - 1]) && ($skip_spiel || $spiel_heim_punkte != 0 || $spiel_gast_punkte != 0 || !empty($ergebnis_detailliert) || ($zwischenergebnis && $spieler_angegeben)));
|
||||
|
||||
$query = "DELETE FROM #__sportsmanager_teamspiel WHERE begegnung_id = $id AND teamspiel_nummer >= $spiel_nr;";
|
||||
$db->setQuery($query);
|
||||
|
||||
@@ -1794,6 +1794,7 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation =
|
||||
$modus = null;
|
||||
if (count($rows) == 1)
|
||||
$modus = $rows[0];
|
||||
$je_satz = !empty($modus) && ($modus->spielpunkte_wertung_einzel >= 10 || $modus->spielpunkte_wertung_doppel >= 10);
|
||||
|
||||
if ($veranstaltung->tabellenwertung > 0) {
|
||||
|
||||
@@ -1809,7 +1810,7 @@ function tabelle($veranstaltung, $spieltag, $alleine_angezeigt, $praesentation =
|
||||
. "\n FROM #__sportsmanager_begegnung"
|
||||
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
|
||||
. "\n INNER JOIN #__sportsmanager_team ON heim_team_id = team_id"
|
||||
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND (heim_spielpunkte != 0 OR gast_spielpunkte != 0) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id)"
|
||||
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND (heim_spielpunkte != 0 OR gast_spielpunkte != 0" . ($je_satz ? " OR NOT ISNULL(heim_tore)" : "") . ") AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id)"
|
||||
. "\n ORDER BY spieltag DESC";
|
||||
$spieltage = loadObjectList($db, $query);
|
||||
|
||||
@@ -2003,6 +2004,9 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_
|
||||
$wertungen = loadObjectList($db, $query);
|
||||
$je_satz = count($wertungen) > 0
|
||||
&& ($wertungen[0]->spielpunkte_wertung_einzel >= 10 || $wertungen[0]->spielpunkte_wertung_doppel >= 10);
|
||||
$ausgetragen = function ($alias) use ($je_satz) {
|
||||
return "($alias.heim_punkte != 0 OR $alias.gast_punkte != 0" . ($je_satz ? " OR NOT ISNULL($alias.heim_tore)" : "") . ")";
|
||||
};
|
||||
|
||||
$query = "SELECT verein_id, teamname, zusatzpunkte,"
|
||||
. "\n werte.*,"
|
||||
@@ -2020,20 +2024,20 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_
|
||||
. "\n FROM #__sportsmanager_team"
|
||||
. "\n LEFT JOIN"
|
||||
. "\n (SELECT t1.team_id,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND ((tt1.heim_team_id = t1.team_id AND tt1.heim_spielpunkte > tt1.gast_spielpunkte) OR (tt1.gast_team_id = t1.team_id AND tt1.gast_spielpunkte > tt1.heim_spielpunkte)) AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS siege,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND tt1.heim_spielpunkte = tt1.gast_spielpunkte AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS unentschieden,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND ((tt1.heim_team_id = t1.team_id AND tt1.heim_spielpunkte < tt1.gast_spielpunkte) OR (tt1.gast_team_id = t1.team_id AND tt1.gast_spielpunkte < tt1.heim_spielpunkte)) AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS niederlagen,"
|
||||
. "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + "
|
||||
. "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS punkte_gewonnen,"
|
||||
. "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + "
|
||||
. "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS punkte_verloren,"
|
||||
. "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + "
|
||||
. "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS spielpunkte_gewonnen,"
|
||||
. "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) + "
|
||||
. "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)), 0)) AS spielpunkte_verloren"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND ((tt1.heim_team_id = t1.team_id AND tt1.heim_spielpunkte > tt1.gast_spielpunkte) OR (tt1.gast_team_id = t1.team_id AND tt1.gast_spielpunkte > tt1.heim_spielpunkte)) AND " . $ausgetragen('tt1') . ") AS siege,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND tt1.heim_spielpunkte = tt1.gast_spielpunkte AND " . $ausgetragen('tt1') . ") AS unentschieden,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND ((tt1.heim_team_id = t1.team_id AND tt1.heim_spielpunkte < tt1.gast_spielpunkte) OR (tt1.gast_team_id = t1.team_id AND tt1.gast_spielpunkte < tt1.heim_spielpunkte)) AND " . $ausgetragen('tt1') . ") AS niederlagen,"
|
||||
. "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) + "
|
||||
. "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) AS punkte_gewonnen,"
|
||||
. "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) + "
|
||||
. "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) AS punkte_verloren,"
|
||||
. "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) + "
|
||||
. "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) AS spielpunkte_gewonnen,"
|
||||
. "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.heim_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) + "
|
||||
. "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND tt1.gast_team_id = t1.team_id AND " . $ausgetragen('tt1') . "), 0)) AS spielpunkte_verloren"
|
||||
. ($je_satz
|
||||
? ",\n (SELECT SUM(CASE WHEN tt1.heim_team_id = t1.team_id THEN tt1.heim_tore ELSE tt1.gast_tore END) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS tore_gewonnen,"
|
||||
. "\n (SELECT SUM(CASE WHEN tt1.heim_team_id = t1.team_id THEN tt1.gast_tore ELSE tt1.heim_tore END) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND (tt1.heim_punkte != 0 OR tt1.gast_punkte != 0)) AS tore_verloren"
|
||||
? ",\n (SELECT SUM(CASE WHEN tt1.heim_team_id = t1.team_id THEN tt1.heim_tore ELSE tt1.gast_tore END) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND " . $ausgetragen('tt1') . ") AS tore_gewonnen,"
|
||||
. "\n (SELECT SUM(CASE WHEN tt1.heim_team_id = t1.team_id THEN tt1.gast_tore ELSE tt1.heim_tore END) FROM #__sportsmanager_begegnung AS tt1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS tt2 ON tt1.begegnung_id = tt2.begegnung_id WHERE " . $filter_mannschaften_begegnung . " ISNULL(tt2.unbestaetigtes_ergebnis_id)" . ($spieltag > 0 ? " AND tt1.spieltag <= $spieltag" : "") . " AND (tt1.heim_team_id = t1.team_id OR tt1.gast_team_id = t1.team_id) AND " . $ausgetragen('tt1') . ") AS tore_verloren"
|
||||
: "")
|
||||
. "\n FROM #__sportsmanager_team AS t1"
|
||||
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)"
|
||||
@@ -5626,19 +5630,22 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
|
||||
$wertungen = loadObjectList($db, $query);
|
||||
$je_satz = count($wertungen) > 0
|
||||
&& ($wertungen[0]->spielpunkte_wertung_einzel >= 10 || $wertungen[0]->spielpunkte_wertung_doppel >= 10);
|
||||
$ausgetragen = function ($alias) use ($je_satz) {
|
||||
return "($alias.heim_punkte != 0 OR $alias.gast_punkte != 0" . ($je_satz ? " OR NOT ISNULL($alias.heim_tore)" : "") . ")";
|
||||
};
|
||||
|
||||
$query = "UPDATE #__sportsmanager_team"
|
||||
. "\n LEFT JOIN"
|
||||
. "\n (SELECT t1.team_id,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu1 ON ttb1.begegnung_id = ttu1.begegnung_id WHERE ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND ((ttb1.heim_team_id = t1.team_id AND ttb1.heim_spielpunkte > ttb1.gast_spielpunkte) OR (ttb1.gast_team_id = t1.team_id AND ttb1.gast_spielpunkte > ttb1.heim_spielpunkte)) AND (ttb1.heim_punkte != 0 OR ttb1.gast_punkte != 0)) AS siege,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb2 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu2 ON ttb2.begegnung_id = ttu2.begegnung_id WHERE ISNULL(ttu2.unbestaetigtes_ergebnis_id) AND (ttb2.heim_team_id = t1.team_id OR ttb2.gast_team_id = t1.team_id) AND ttb2.heim_spielpunkte = ttb2.gast_spielpunkte AND (ttb2.heim_punkte != 0 OR ttb2.gast_punkte != 0)) AS unentschieden,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb3 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu3 ON ttb3.begegnung_id = ttu3.begegnung_id WHERE ISNULL(ttu3.unbestaetigtes_ergebnis_id) AND ((ttb3.heim_team_id = t1.team_id AND ttb3.heim_spielpunkte < ttb3.gast_spielpunkte) OR (ttb3.gast_team_id = t1.team_id AND ttb3.gast_spielpunkte < ttb3.heim_spielpunkte)) AND (ttb3.heim_punkte != 0 OR ttb3.gast_punkte != 0)) AS niederlagen,"
|
||||
. "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb4 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu4 ON ttb4.begegnung_id = ttu4.begegnung_id WHERE ISNULL(ttu4.unbestaetigtes_ergebnis_id) AND ttb4.heim_team_id = t1.team_id AND (ttb4.heim_punkte != 0 OR ttb4.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb5 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu5 ON ttb5.begegnung_id = ttu5.begegnung_id WHERE ISNULL(ttu5.unbestaetigtes_ergebnis_id) AND ttb5.gast_team_id = t1.team_id AND (ttb5.heim_punkte != 0 OR ttb5.gast_punkte != 0)), 0)) AS spielpunkte_gewonnen,"
|
||||
. "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb6 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu6 ON ttb6.begegnung_id = ttu6.begegnung_id WHERE ISNULL(ttu6.unbestaetigtes_ergebnis_id) AND ttb6.heim_team_id = t1.team_id AND (ttb6.heim_punkte != 0 OR ttb6.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb7 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu7 ON ttb7.begegnung_id = ttu7.begegnung_id WHERE ISNULL(ttu7.unbestaetigtes_ergebnis_id) AND ttb7.gast_team_id = t1.team_id AND (ttb7.heim_punkte != 0 OR ttb7.gast_punkte != 0)), 0)) AS spielpunkte_verloren,"
|
||||
. "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb8 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu8 ON ttb8.begegnung_id = ttu8.begegnung_id WHERE ISNULL(ttu8.unbestaetigtes_ergebnis_id) AND ttb8.heim_team_id = t1.team_id AND (ttb8.heim_punkte != 0 OR ttb8.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb9 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu9 ON ttb9.begegnung_id = ttu9.begegnung_id WHERE ISNULL(ttu9.unbestaetigtes_ergebnis_id) AND ttb9.gast_team_id = t1.team_id AND (ttb9.heim_punkte != 0 OR ttb9.gast_punkte != 0)), 0)) AS punkte_gewonnen,"
|
||||
. "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb10 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu10 ON ttb10.begegnung_id = ttu10.begegnung_id WHERE ISNULL(ttu10.unbestaetigtes_ergebnis_id) AND ttb10.heim_team_id = t1.team_id AND (ttb10.heim_punkte != 0 OR ttb10.gast_punkte != 0)), 0)) + (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb11 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu11 ON ttb11.begegnung_id = ttu11.begegnung_id WHERE ISNULL(ttu11.unbestaetigtes_ergebnis_id) AND ttb11.gast_team_id = t1.team_id AND (ttb11.heim_punkte != 0 OR ttb11.gast_punkte != 0)), 0)) AS punkte_verloren,"
|
||||
. "\n (SELECT SUM(CASE WHEN ttb12.heim_team_id = t1.team_id THEN ttb12.heim_tore ELSE ttb12.gast_tore END) FROM #__sportsmanager_begegnung AS ttb12 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu12 ON ttb12.begegnung_id = ttu12.begegnung_id WHERE ISNULL(ttu12.unbestaetigtes_ergebnis_id) AND (ttb12.heim_team_id = t1.team_id OR ttb12.gast_team_id = t1.team_id) AND (ttb12.heim_punkte != 0 OR ttb12.gast_punkte != 0)) AS tore_gewonnen,"
|
||||
. "\n (SELECT SUM(CASE WHEN ttb13.heim_team_id = t1.team_id THEN ttb13.gast_tore ELSE ttb13.heim_tore END) FROM #__sportsmanager_begegnung AS ttb13 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu13 ON ttb13.begegnung_id = ttu13.begegnung_id WHERE ISNULL(ttu13.unbestaetigtes_ergebnis_id) AND (ttb13.heim_team_id = t1.team_id OR ttb13.gast_team_id = t1.team_id) AND (ttb13.heim_punkte != 0 OR ttb13.gast_punkte != 0)) AS tore_verloren"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb1 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu1 ON ttb1.begegnung_id = ttu1.begegnung_id WHERE ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND ((ttb1.heim_team_id = t1.team_id AND ttb1.heim_spielpunkte > ttb1.gast_spielpunkte) OR (ttb1.gast_team_id = t1.team_id AND ttb1.gast_spielpunkte > ttb1.heim_spielpunkte)) AND " . $ausgetragen('ttb1') . ") AS siege,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb2 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu2 ON ttb2.begegnung_id = ttu2.begegnung_id WHERE ISNULL(ttu2.unbestaetigtes_ergebnis_id) AND (ttb2.heim_team_id = t1.team_id OR ttb2.gast_team_id = t1.team_id) AND ttb2.heim_spielpunkte = ttb2.gast_spielpunkte AND " . $ausgetragen('ttb2') . ") AS unentschieden,"
|
||||
. "\n (SELECT COUNT(*) FROM #__sportsmanager_begegnung AS ttb3 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu3 ON ttb3.begegnung_id = ttu3.begegnung_id WHERE ISNULL(ttu3.unbestaetigtes_ergebnis_id) AND ((ttb3.heim_team_id = t1.team_id AND ttb3.heim_spielpunkte < ttb3.gast_spielpunkte) OR (ttb3.gast_team_id = t1.team_id AND ttb3.gast_spielpunkte < ttb3.heim_spielpunkte)) AND " . $ausgetragen('ttb3') . ") AS niederlagen,"
|
||||
. "\n (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb4 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu4 ON ttb4.begegnung_id = ttu4.begegnung_id WHERE ISNULL(ttu4.unbestaetigtes_ergebnis_id) AND ttb4.heim_team_id = t1.team_id AND " . $ausgetragen('ttb4') . "), 0)) + (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb5 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu5 ON ttb5.begegnung_id = ttu5.begegnung_id WHERE ISNULL(ttu5.unbestaetigtes_ergebnis_id) AND ttb5.gast_team_id = t1.team_id AND " . $ausgetragen('ttb5') . "), 0)) AS spielpunkte_gewonnen,"
|
||||
. "\n (COALESCE((SELECT SUM(gast_spielpunkte) FROM #__sportsmanager_begegnung AS ttb6 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu6 ON ttb6.begegnung_id = ttu6.begegnung_id WHERE ISNULL(ttu6.unbestaetigtes_ergebnis_id) AND ttb6.heim_team_id = t1.team_id AND " . $ausgetragen('ttb6') . "), 0)) + (COALESCE((SELECT SUM(heim_spielpunkte) FROM #__sportsmanager_begegnung AS ttb7 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu7 ON ttb7.begegnung_id = ttu7.begegnung_id WHERE ISNULL(ttu7.unbestaetigtes_ergebnis_id) AND ttb7.gast_team_id = t1.team_id AND " . $ausgetragen('ttb7') . "), 0)) AS spielpunkte_verloren,"
|
||||
. "\n (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb8 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu8 ON ttb8.begegnung_id = ttu8.begegnung_id WHERE ISNULL(ttu8.unbestaetigtes_ergebnis_id) AND ttb8.heim_team_id = t1.team_id AND " . $ausgetragen('ttb8') . "), 0)) + (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb9 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu9 ON ttb9.begegnung_id = ttu9.begegnung_id WHERE ISNULL(ttu9.unbestaetigtes_ergebnis_id) AND ttb9.gast_team_id = t1.team_id AND " . $ausgetragen('ttb9') . "), 0)) AS punkte_gewonnen,"
|
||||
. "\n (COALESCE((SELECT SUM(gast_punkte) FROM #__sportsmanager_begegnung AS ttb10 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu10 ON ttb10.begegnung_id = ttu10.begegnung_id WHERE ISNULL(ttu10.unbestaetigtes_ergebnis_id) AND ttb10.heim_team_id = t1.team_id AND " . $ausgetragen('ttb10') . "), 0)) + (COALESCE((SELECT SUM(heim_punkte) FROM #__sportsmanager_begegnung AS ttb11 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu11 ON ttb11.begegnung_id = ttu11.begegnung_id WHERE ISNULL(ttu11.unbestaetigtes_ergebnis_id) AND ttb11.gast_team_id = t1.team_id AND " . $ausgetragen('ttb11') . "), 0)) AS punkte_verloren,"
|
||||
. "\n (SELECT SUM(CASE WHEN ttb12.heim_team_id = t1.team_id THEN ttb12.heim_tore ELSE ttb12.gast_tore END) FROM #__sportsmanager_begegnung AS ttb12 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu12 ON ttb12.begegnung_id = ttu12.begegnung_id WHERE ISNULL(ttu12.unbestaetigtes_ergebnis_id) AND (ttb12.heim_team_id = t1.team_id OR ttb12.gast_team_id = t1.team_id) AND " . $ausgetragen('ttb12') . ") AS tore_gewonnen,"
|
||||
. "\n (SELECT SUM(CASE WHEN ttb13.heim_team_id = t1.team_id THEN ttb13.gast_tore ELSE ttb13.heim_tore END) FROM #__sportsmanager_begegnung AS ttb13 LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu13 ON ttb13.begegnung_id = ttu13.begegnung_id WHERE ISNULL(ttu13.unbestaetigtes_ergebnis_id) AND (ttb13.heim_team_id = t1.team_id OR ttb13.gast_team_id = t1.team_id) AND " . $ausgetragen('ttb13') . ") AS tore_verloren"
|
||||
. "\n FROM #__sportsmanager_team AS t1 WHERE veranstaltung_id = $veranstaltung->veranstaltung_id)"
|
||||
. "\n AS werte USING (team_id)"
|
||||
. "\n SET #__sportsmanager_team.siege = werte.siege,"
|
||||
@@ -5684,7 +5691,7 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
|
||||
. "\n FROM #__sportsmanager_begegnung AS ttb1"
|
||||
. "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = team_id"
|
||||
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS ttu1 ON ttb1.begegnung_id = ttu1.begegnung_id"
|
||||
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND (ttb1.heim_punkte != 0 OR ttb1.gast_punkte != 0)";
|
||||
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND ISNULL(ttu1.unbestaetigtes_ergebnis_id) AND " . $ausgetragen('ttb1') . "";
|
||||
$paarungen = loadObjectList($db, $query);
|
||||
|
||||
foreach ($paarungen as $paarung) {
|
||||
@@ -5743,7 +5750,7 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
|
||||
. "\n FROM #__sportsmanager_begegnung"
|
||||
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis USING (begegnung_id)"
|
||||
. "\n INNER JOIN #__sportsmanager_team ON heim_team_id = team_id"
|
||||
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND (heim_spielpunkte != 0 OR gast_spielpunkte != 0) AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id)"
|
||||
. "\n WHERE veranstaltung_id = $veranstaltung->veranstaltung_id AND (heim_spielpunkte != 0 OR gast_spielpunkte != 0" . ($je_satz ? " OR NOT ISNULL(heim_tore)" : "") . ") AND ISNULL(#__sportsmanager_unbestaetigtes_ergebnis.begegnung_id)"
|
||||
. "\n ORDER BY spieltag DESC";
|
||||
$spieltage = loadObjectList($db, $query);
|
||||
$anzahl_spieltage_gespielt = loadResult($db, $query);
|
||||
|
||||
Reference in New Issue
Block a user