juha: SQL-Abfrage

HAllo Zusammen

Folgendes würde ich gerne zum x-ten Mal in meinem Perlprogramm anwenden, was ist daran falsch?
Wenn ich es am schluss zur Kontrolle mal ausprinten möchte steht nichts in $datum und auch nichts in $hash_datum->{batch_datum}, führe ich dies gleich in der Datenbank aus so funktioniert mein select befehl!
(z.B. select max(batch_datum) from batch where pers_id = 20; )

Hier der Code:

$select = "select max(batch_datum) from batch where pers_id = $schluss";
my($datum) = $dbh->prepare($select);
$datum->execute();
$hash_datum = $datum->fetchrow_hashref;
$datum = $hash_datum->{batch_datum};

print $hash_datum->{batch_datum};
print $datum;

Danke vielmals
Juha

  1. Hi,

    $select = "select max(batch_datum) from batch where pers_id = $schluss";

    erster Test:

    print $select;

    Anschließend führe das *exakte* Statement in der DB aus, nicht ein beispielhaftes. Copy & Paste ist angesagt.

    my($datum) = $dbh->prepare($select);

    Warum Listenkontext?

    my $datum = $dbh->prepare($select);

    $datum->execute();

    Übrigens solltest Du Dir angewöhnen, mit Bindvariablen zu arbeiten. Stichwort Performance.

    $hash_datum = $datum->fetchrow_hashref;

    Schon mal andere fetchrows probiert?

    $datum = $hash_datum->{batch_datum};

    Ich nehme nämlich an, dass "max(batch_datum)" am Ende nicht "batch_datum" heißt.

    Cheatah

    1. Hallo

      erster Test:

      print $select;

      Kam genau das was ich wollte

      Anschließend führe das *exakte* Statement in der DB aus, nicht ein beispielhaftes. Copy & Paste ist angesagt.

      Ebenfalls erfolgreich durchgeführt

      my($datum) = $dbh->prepare($select);

      Warum Listenkontext?

      my $datum = $dbh->prepare($select);

      $datum->execute();

      Übrigens solltest Du Dir angewöhnen, mit Bindvariablen zu arbeiten. Stichwort Performance.

      $hash_datum = $datum->fetchrow_hashref;

      Schon mal andere fetchrows probiert?

      Kenn mich nur mit diesen aus, gibt es denn noch andere varianten?

      $datum = $hash_datum->{batch_datum};

      Ich nehme nämlich an, dass "max(batch_datum)" am Ende nicht "batch_datum" heißt.

      Es stimmt genau, ich möchte den letzten eintrag von batch_datum welcher die ID "sowieso" hat!

      Grüsse juha

      1. Hi,

        $hash_datum = $datum->fetchrow_hashref;
        Schon mal andere fetchrows probiert?
        Kenn mich nur mit diesen aus, gibt es denn noch andere varianten?

        ja, siehe

        perldoc DBI

        $datum = $hash_datum->{batch_datum};
        Ich nehme nämlich an, dass "max(batch_datum)" am Ende nicht "batch_datum" heißt.
        Es stimmt genau, ich möchte den letzten eintrag von batch_datum welcher die ID "sowieso" hat!

        Tja. Lass Dir doch mal die Keys des Hashs ausgeben.

        Cheatah