Philipp Hasenfratz: Korrektur

Beitrag lesen

Halihallo Philipp

my @monatsliste = ();
  for ( my $i = 1; $i <= 31; $i++) {
    my $entrys = $Config::DBH->selectrow_array( "SELECT COUNT(entry) FROM participant WHERE YEAR(entry) = $year AND MONTH(entry) = $month AND DAYOFMONTH(entry) = $i " );
    push @monatsliste, { VALUE => $i, ENTRYS => $entrys };
  }
Verwende GROUP BY MONTH(entry), YEAR(entry), DAYOFMONTH(entry)

Korrektur: MONTH(entry) und YEAR(entry) gehören in die WHERE-Klausel, da sie staatischer
Natur sind (sie werden ja als Parameter des Scripts festgelegt). Bei meinem Vorschlag
hättest du jeden Tag einzeln, egal in welchem Jahr und Monat aufgelistet bekommen, dir
beliebt es ja nur nach dem Monat und Jahr, welche übergeben wurden.

Zudem wäre es ggf. sogar performanter, wenn du die einzelnen Tage aufsummierst und so die
Totale Anzahl Einträge für den gesamten Monat berechnest. So würde die Anzahl der
Abfragen auf eins reduziert und die Berechnung der ersten Query-Abfrage auf das
addieren von 31 Werten reduziert. Ob sich das jedoch lohnt oder nicht müsstest du mit
Benchmarks messen.

btw: was haben Datenbanken mit Perl zu tun?

Viele Grüsse

Philipp

--
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.