query("SELECT DISTINCT EXTRACT(YEAR FROM CAST(kb.datum_abgebucht AS DATE)) AS jahr, m.name_kurz, m.wert FROM kontobewegung kb JOIN monat m ON 1=1 WHERE kb.datum_abgebucht IS NOT NULL ORDER BY jahr, m.wert;"); $zeitraeume = $stmt->fetchAll(PDO::FETCH_ASSOC); $xAchse = []; foreach($zeitraeume as $zeitraum) { $xAchse[] = $zeitraum['name_kurz'] . ' ' . $zeitraum['jahr']; } $konten = []; $farben = ['gesamt Thomas' => '#007bffff', 'gesamt Caro' => '#fcd3daff', 'gesamt Emil' => '#91c89aff']; $gesamt = []; $gesamtThomas = []; $gesamtCaro = []; $gesamtEmil = []; $relevantFuerGesamtThomas = false; $relevantFuerGesamtCaro = false; $relevantFuerGesamtEmil = false; $kontenRelevantFuerDiagramm = [1, 2, 3, 4, 5, 6, 9, 10]; foreach($kontenRelevantFuerDiagramm as $konto) { switch($konto) { case 1: $relevantFuerGesamtThomas = true; $relevantFuerGesamtCaro = true; $relevantFuerGesamtEmil = false; break; case 2: $relevantFuerGesamtThomas = true; $relevantFuerGesamtCaro = true; $relevantFuerGesamtEmil = false; break; case 3: $relevantFuerGesamtThomas = true; $relevantFuerGesamtCaro = true; $relevantFuerGesamtEmil = false; break; case 4: $relevantFuerGesamtThomas = true; $relevantFuerGesamtCaro = true; $relevantFuerGesamtEmil = false; break; case 5: $relevantFuerGesamtThomas = false; $relevantFuerGesamtCaro = false; $relevantFuerGesamtEmil = true; break; case 6: $relevantFuerGesamtThomas = false; $relevantFuerGesamtCaro = false; $relevantFuerGesamtEmil = true; break; case 9: $relevantFuerGesamtThomas = false; $relevantFuerGesamtCaro = true; $relevantFuerGesamtEmil = false; break; case 10: $relevantFuerGesamtThomas = true; $relevantFuerGesamtCaro = false; $relevantFuerGesamtEmil = false; break; } $stmt = $pdo->query("SELECT SUM(kb.betrag) AS monatsbetrag, m.name_kurz || ' ' || EXTRACT(YEAR FROM CAST(kb.datum_abgebucht AS DATE)) AS jahr, k.bezeichnung, COALESCE(ad.startbetrag, 0) AS startbetrag, m.wert, k.darstellungsfarbe FROM kontobewegung kb JOIN konto k ON k.id = kb.konto_id JOIN monat m ON m.wert = CASE WHEN EXTRACT(MONTH FROM CAST(kb.datum_abgebucht AS DATE)) < 10 THEN '0' || EXTRACT(MONTH FROM CAST(kb.datum_abgebucht AS DATE)) WHEN EXTRACT(MONTH FROM CAST(kb.datum_abgebucht AS DATE)) >= 10 THEN '' || EXTRACT(MONTH FROM CAST(kb.datum_abgebucht AS DATE)) END LEFT OUTER JOIN ausgangsdaten ad ON ad.konto_id = k.id WHERE kb.konto_id = $konto AND kb.datum_abgebucht IS NOT NULL GROUP BY EXTRACT(YEAR FROM CAST(kb.datum_abgebucht AS DATE)), m.wert, m.name_kurz, k.bezeichnung, startbetrag, k.darstellungsfarbe ORDER BY k.bezeichnung, EXTRACT(YEAR FROM CAST(kb.datum_abgebucht AS DATE)), m.wert;"); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); $kontoBezeichnung = $rows[0]['bezeichnung']; $vormonatsBetrag = $rows[0]['startbetrag']; $farben[$kontoBezeichnung] = $rows[0]['darstellungsfarbe']; $konten[$kontoBezeichnung] = []; foreach($xAchse as $x) { if($relevantFuerGesamtThomas) { if(!isset($gesamtThomas[$x])) $gesamtThomas[$x] = $vormonatsBetrag; else $gesamtThomas[$x] += $vormonatsBetrag; } if($relevantFuerGesamtCaro) { if(!isset($gesamtCaro[$x])) $gesamtCaro[$x] = $vormonatsBetrag; else $gesamtCaro[$x] += $vormonatsBetrag; } if($relevantFuerGesamtEmil) { if(!isset($gesamtEmil[$x])) $gesamtEmil[$x] = $vormonatsBetrag; else $gesamtEmil[$x] += $vormonatsBetrag; } $enthalten = false; foreach($rows as $row) { if($x == $row['jahr']) { $vormonatsBetrag += $row['monatsbetrag']; $konten[$kontoBezeichnung][] = $vormonatsBetrag; $enthalten = true; } } if(!$enthalten) $konten[$kontoBezeichnung][] = $vormonatsBetrag; } } foreach($gesamtThomas as $g => $f) { $gesamt['gesamt Thomas'][] = $f; } foreach($gesamtCaro as $g => $f) { $gesamt['gesamt Caro'][] = $f; } foreach($gesamtEmil as $g => $f) { $gesamt['gesamt Emil'][] = $f; } $monateJson = json_encode($xAchse); $kontenJson = json_encode($konten); $gesamtJson = json_encode($gesamt); $farbenJson = json_encode($farben); ?>