mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 06:27:52 +00:00
Optimierung Inserts fuer Aktualisierung Ranglisten
This commit is contained in:
@@ -4822,7 +4822,6 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
|
||||
function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnierdisziplin_id = 0, $geaenderte_spieler_id = 0, $berechnungen_auswerten = FALSE): void
|
||||
{
|
||||
$db = getDatabase();
|
||||
|
||||
if ($geaenderte_spieler_id != 0) {
|
||||
$query = "SELECT DISTINCT #__sportsmanager_rangliste.*"
|
||||
. "\n FROM #__sportsmanager_turniermeldung_spieler"
|
||||
@@ -4837,7 +4836,6 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
|
||||
. "\n FROM #__sportsmanager_berechnung"
|
||||
. "\n INNER JOIN #__sportsmanager_rangliste ON id = rangliste_id"
|
||||
. "\n WHERE typ = 'rangliste' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'"));
|
||||
$berechnungen = loadObjectList($db, $query);
|
||||
} else if ($geaenderte_rangliste_id != 0) {
|
||||
$query = "SELECT * FROM #__sportsmanager_rangliste"
|
||||
. "\n WHERE rangliste_id = $geaenderte_rangliste_id";
|
||||
@@ -4939,6 +4937,8 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
|
||||
|
||||
$db->transactionStart();
|
||||
$meldungen = array();
|
||||
$Anzahl = 0;
|
||||
$query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin_punkte (rangliste_id, spieler_id, turnierdisziplin_id, platz, punkte) VALUES ";
|
||||
foreach ($turnierplatzierungen as $index => $turnierplatzierung) {
|
||||
if (empty($turnierplatzierung->spieler_id))
|
||||
continue;
|
||||
@@ -5030,7 +5030,12 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
|
||||
}
|
||||
}
|
||||
$punkte[$turnierplatzierung->spieler_id][] = $p;
|
||||
$query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin_punkte (rangliste_id, spieler_id, turnierdisziplin_id, platz, punkte) VALUES ('$rangliste_id', '$turnierplatzierung->spieler_id', '$turnierdisziplin->turnierdisziplin_id', '$turnierplatzierung->platz', '$p') ON DUPLICATE KEY UPDATE punkte = punkte + VALUES(punkte);";
|
||||
if ($Anzahl > 0) $query .= ",";
|
||||
$query .= "('$rangliste_id', '$turnierplatzierung->spieler_id', '$turnierdisziplin->turnierdisziplin_id', '$turnierplatzierung->platz', '$p')";
|
||||
$Anzahl++;
|
||||
}
|
||||
$query .= " ON DUPLICATE KEY UPDATE punkte = punkte + VALUES(punkte);";
|
||||
if ($Anzahl > 0){
|
||||
$db->setQuery($query);
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
@@ -5056,21 +5061,25 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
|
||||
$platz = 1;
|
||||
$tatsaechlicher_platz = 1;
|
||||
$spieler_punkte = 0;
|
||||
|
||||
$Anzahl = 0;
|
||||
$db->transactionStart();
|
||||
$query = "INSERT INTO #__sportsmanager_rangliste_punkte(rangliste_id, spieler_id, punkte, teilnahmen, platz) VALUES ";
|
||||
foreach ($punkte_summe as $spieler_id => $spieler_punkte_summe) {
|
||||
$spieler_teilnahmen = $teilnahmen[$spieler_id];
|
||||
if ($platz == 1 || $spieler_punkte != $spieler_punkte_summe)
|
||||
$tatsaechlicher_platz = $platz;
|
||||
|
||||
$query = "INSERT INTO #__sportsmanager_rangliste_punkte (rangliste_id, spieler_id, punkte, teilnahmen, platz) VALUES ('$rangliste_id', '$spieler_id', '$spieler_punkte_summe', '$spieler_teilnahmen', '$tatsaechlicher_platz') ON DUPLICATE KEY UPDATE punkte = VALUES(punkte), teilnahmen = VALUES(teilnahmen), platz = VALUES(platz);";
|
||||
if ($Anzahl > 0) $query .= ",";
|
||||
$query .= "('$rangliste_id', '$spieler_id', '$spieler_punkte_summe', '$spieler_teilnahmen', '$tatsaechlicher_platz') ";
|
||||
$Anzahl++;
|
||||
$spieler_punkte = $spieler_punkte_summe;
|
||||
$platz++;
|
||||
}
|
||||
$query .= " ON DUPLICATE KEY UPDATE punkte = VALUES(punkte), teilnahmen = VALUES(teilnahmen), platz = VALUES(platz);";
|
||||
if ($Anzahl > 0){
|
||||
$db->setQuery($query);
|
||||
if (!$db->execute()) {
|
||||
die($db->stderr(true));
|
||||
}
|
||||
|
||||
$spieler_punkte = $spieler_punkte_summe;
|
||||
$platz++;
|
||||
}
|
||||
$db->transactionCommit();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user