Schrift
[thread]3493[/thread]

GROUP BY Timestamp ?: Tag bei Timestamp herausfinden (Seite 3)



<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten
renee
 2004-08-05 19:07
#32522 #32522
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
dein code muss so aussehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
my $sth_prepare = $dbh1->prepare("select count(id) from userlog group by substring(datestamp,1,10)");
$sth_prepare->execute() or die $DBI::errstr;

print "Content-Type: text/html\n\n";
my $list;
while(my ($count) = $sth_prepare->fetchrow_array()) {
$list .= "$count<br>";
}
print $list;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2004-08-05 19:09
#32523 #32523
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Froschpopo,05.08.2004, 17:05]übrigens kannst Du garnicht 1,2 bekommen, denn der 3. liegt schon zwei Tage zurück, es müssten also wenn schon so aussehen.

0,0,1,2[/quote]
Wen meinst Du??

Anzahl 0 wird nie zurückgegeben, da dann kein Eintrag in der Datenbank ist. Die Datenbank kann ja schlecht wissen, was Du wissen willst.
Du musst also das Datum auch noch bekommen und dann überprüfen, ob auch wirklich zu jedem Tag ein Ergebnis geliefert wurde, da sonst Ergebnis = 0!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Froschpopo
 2004-08-05 19:11
#32524 #32524
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
"Anzahl 0 wird nie zurückgegeben" - warum brauch man dann count() ? ich will ja _nicht_ wissen was in den Datensätzen drinnensteht, ich will sie _nur_ zählen !!\n\n

<!--EDIT|Froschpopo|1091718741-->
renee
 2004-08-05 19:15
#32525 #32525
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann musst du jeden Tag bei allen einen Pseudo-Logeintrag machen, dann bekommst Du ne 1 zurück, wenn eigentlich nichts geloggt wird. Dann subtrahierst Du 1 von dem gelieferten Ergebnis - dann kannst Du damit arbeiten...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Froschpopo
 2004-08-05 19:15
#32526 #32526
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich hab noch mal grad select count(*) from userlog group by datestamp gemacht und auch da gibt er mit 1 zurück. Das kann doch wohl nicht wahr sein!!!
Code: (dl )
1
2
3
4
5
6
7
8
9
10
userlog:





id datestamp
1 2004-08-03 14:19:06
2 2004-08-03 14:19:06
3 2004-08-02 14:19:06
Froschpopo
 2004-08-05 19:39
#32527 #32527
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ahaa jetzt bin ich einen Schritt weiter:
Code: (dl )
1
2
3
while (my @arr2 = $sth_prepare->fetchrow_array()) {
print "$arr2[0]<br>";
}

scheiß for...
allerdings funktioniert keines der o.g. Statements.
Code: (dl )
select count(id) from userlog group by substring(datestamp,1,10)

ergibt# 1,1,1 obwohl die beiden ersten Datensätze am selben Tag gemacht wurden.
Froschpopo
 2004-08-05 19:41
#32528 #32528
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ups halt stop, jetzt klappts !!!
Froschpopo
 2004-08-05 21:03
#32529 #32529
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich hab noch ein problem:
die Tage an denen es keine Seitenaufrufe gibt, werde einfach nicht gezählt (wie schon von renee befürchtet). Wie kann ich jetzt die Tage überbrücken bzw dann dort entsprechend eine 0 einsetzen ?
Code: (dl )
1
2
3
4
5
6
my $sth_prepare = $dbh1->prepare("select datestamp, count(id) from userlog group by substring(datestamp,1,10) order by datestamp asc limit 0,7");
$sth_prepare->execute() or die $DBI::errstr;

while (my @arr2 = $sth_prepare->fetchrow_array()) {
push @array, $arr2[1];
}
Froschpopo
 2004-08-05 21:08
#32530 #32530
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich dachte da an sowas in der Richtung:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my $sth_prepare = $dbh1->prepare("select datestamp, count(id) from userlog group by substring(datestamp,1,10) order by datestamp asc limit 0,12");
$sth_prepare->execute() or die $DBI::errstr;

my $day_now;
my $day_old;
my $dif = 1;
my @dif_array = ();

while (my @arr2 = $sth_prepare->fetchrow_array()) {
$day_now = substr($arr2[0],8,2);
$dif = $day_now - $day_old;
push @dif_array, $dif;
for (@dif_array) {
push @array, 0 if $_>1;
}
push @array, $arr2[1];
$day_old = $day_now;
}

kann das funktionieren?
Froschpopo
 2004-08-05 21:48
#32531 #32531
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
jetzt kocht mir aber echt der Kopf....
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my $day_now;
my $day_old = "first";
my $dif = 1;
my @dif_array = ();

while (my @arr2 = $sth_prepare->fetchrow_array()) {
$day_now = substr($arr2[0],8,2);
$dif = $day_now - $day_old unless $day_old eq 'first';
push @dif_array, $dif;
for (@dif_array) {
push @array, 0 while (0..$_);
}
push @array, $arr2[1];
$day_old = $day_now;
}

mal gucken ob das funzelt :D
<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten



View all threads created 2004-08-05 08:00.