Philipp Hasenfratz: mysql, Zeilenindex mit selecten

Beitrag lesen

Halihallo Cruz

ihr seid mir zwei Pfeifen, das hat doch mit push und pop nicht im Entferntesten was zu tun und der sequenzielle Auslesen Spruch greift hier auch nicht wirklich.

Entweder du hast uns relevante Informationen vorenthalten, oder du verstehst unseren
Lösungsvorschlag nicht.

Ich will wissen, dass wenn ich einen komplexen SELECT mit diversen Bedingungen + Sortierung in die Datenbank absetze an welcher Stelle ein Datensatz mit der id X steht.

Dir ist die Methode selectcol_arrayref bekannt?

<quote>
  # get array of id and name pairs:
  my $ary_ref = $dbh->selectcol_arrayref("select id, name from table", { Columns=>[1,2] });
  my %hash = @$ary_ref; # build hash from key-value pairs so $hash{$id} => name
</quote>

Dann kannst du über den %hash nach ID selektieren. Problem: Du kannst nur zwei
Columns selektieren.

Die fetchall_arrayref() DBI Funktion liefert ein array von hashrefs zurück, welches man wunderbar als Objekt zur weiteren Verarbeitung verwenden kann. Um die Position eines Datensatzes herauszufinden müsste ich das array durchnudeln und mitzählen, bis ich weiss wo mein Datensatz steht. Wenn der Positionsindex gleich im Objekt mit drin ist, dann kennt jeder Datensatz seinen eigenen Positionsindex und dann braucht man es nur noch abzurufen.

Ein Array hat den Positionsindex immer implizit. $array_ref->[$index]. Aber wenn du
die _ID_ finden möchtest, müsstest du wirklich durch den ArrayRef iterieren bzw.
obengenannte Möglichkeit umsetzen, oder durch das genannte LIMIT oder geeignete
Kriterien in der WHERE-Klausel selektieren.

Mit LIMIT kann man übrigens nur den tatsächlich ausgegebenen Wertebreich nur einschränken, aber nicht ausgeben.

Hä? - Was anderes ist nicht die Aufgabe von LIMIT.

Viele Grüsse

Philipp