Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3794[/thread]

Ergebis der Mysqlabfrage in Perl anders



<< >> 6 Einträge, 1 Seite
Gast Gast
 2007-03-09 13:45
#35327 #35327
Hallo zusammen,
ich will aus einer Datenbank einen Schnitt errechnen und diesen in einer Tabelle ablegen. Soweit funktioniert auch alles gut, allerdings wir mir in Perl bei der SQL Abfrage er Schnitt nicht mit ausgegeben.
Wenn ich die SQL Befehl direkt an die Datenbank schicke, bekomme ich alle Ergebnisse die ich haben möchte. In Perl komme ich allerdings nicht an den zweite Wert (Schnitt).

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/perl

use DBI;

($sec,$min,$hour,$mday,$mon,$year,$wday,$ydat,$isdst)=localtime();

$jahr=$year;
$monat=$mon+1;
$tag=$mday;
$jahr=$year +1900;

if($tag >= 25) {
if($monat == 1) { $jahr--; $monat = 12; }
else { $monat--; }
}

if(length($monat) == 1) { $monat="0$monat"; }
if(length($tag) == 1) { $tag="0$tag"; }

$von = $jahr."-".$monat."-26 00:00:00";


#Verbindung herstellen
my $dbh = DBI->connect("DBI:mysql:callcenter",web5,al56sk);

my $help2 = "SELECT MA_ID,
(SELECT COUNT(*) FROM produktion WHERE (VK_DATUM BETWEEN '$von' AND CURRENT_DATE)
AND QCSTATUS='OK' AND MA_ID = mitarbeiter.MA_ID AND VK_DATUM!=CURRENT_DATE) /
(SELECT (SUM(TIME_TO_SEC(TIME(SUBTIME(SUBTIME(ENDE,BEGINN), PAUSE))))/3600)
FROM login WHERE MA_ID = mitarbeiter.MA_ID AND DATUM BETWEEN '$von' AND SUBDATE(CURRENT_DATE,1)) AS SCHNITT
FROM mitarbeiter ORDER BY SCHNITT DESC LIMIT 0,3";

$sql = qq { $help2 };
my $sth = $dbh->prepare($sql);

$sth->execute();

my $i = 0;

while(@r=$sth->fetchrow_array) {
$i++;
print "\n".$r[1];
$dbh->do( qq { UPDATE highscore SET SCHNITT = '$r[1]', MA_ID = '$r[0]', DATE = NOW() WHERE ID = $i} );
}


$sth->finish();
$dbh->disconnect();

print "\n ------------ Highscore upgedated... --------------\n";


Danke und Gruß

Markus
Relais
 2007-03-09 14:26
#35328 #35328
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Guest,09.03.2007, 12:45]In Perl komme ich allerdings nicht an den zweite Wert (Schnitt).[/quote]
Wie äußert sich das genau?

Dein "d" auf der Tastatur klemmt...
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
_Markus_
 2007-03-12 11:03
#35329 #35329
User since
2007-03-12
2 Artikel
BenutzerIn
[default_avatar]
Das zweite Feld wird anscheint komplett weggelassen...
Kann auf $r[1] nicht zugreifen bzw. es ist leer.

Wenn ich folgendes eingebe

Code: (dl )
1
2
my $anz = @r;
print "Arraygröße: ".$#r." bzw. ".$anz."\nDatensätze: ".$i;


bekomme ich das hier heraus...
Code: (dl )
1
2
Arraygröße: -1 bzw. 0
Datensätze: 3


An SQL Spruch liegts allerdings nicht...wenn ich den direkt an die DB schicke, bekomme ich auch den Schnitt (also das zweite Feld) angezeigt...in PHP funktioniert es auch...

Gruß Markus
renee
 2007-03-12 20:13
#35330 #35330
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Versuch mal mit trace herauszubekommen, was da im Hintergrund abläuft.

Das mit der Arraygröße ist klar, wenn Du den Code nach der while-Schleife eingefügt hast...

Arbeite bitte mal mit Wiki:[tt]use strict[/tt].

Was kommt denn raus wenn Du am Anfang des Skripts
Code: (dl )
use Data::Dumper;
und in der while-Schleife
Code: (dl )
print Dumper(\@r);
einfügst?
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/
_Markus_
 2007-03-13 14:32
#35331 #35331
User since
2007-03-12
2 Artikel
BenutzerIn
[default_avatar]
Bekomme dann folgendes raus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$VAR1 = [
'1053',
undef
];

$VAR1 = [
'1065',
undef
];

$VAR1 = [
'1066',
undef
];


Gruß

Markus
renee
 2007-03-13 14:35
#35332 #35332
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du Dir schon mal $von angesehen, ob da das korrekte Datum drinsteht?
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/
<< >> 6 Einträge, 1 Seite



View all threads created 2007-03-09 13:45.