> First let's let the other list member in on the code: > > use DBI; > use strict; > my $dbname = "test"; > my $host = "localhost"; > my $dbuser = ''; > my $dbpw = ''; > my $mscs = "dbi:mysql:dbname=$dbname;host=$host;"; > my $dbh = DBI->connect($mscs, $dbuser, $dbpw) or die "Connect fails to > $dbname\nError = ", $DBI::errstr; > my $sql = "select * from method";
#replace prev. line with: my $sql = 'select methodid,method,sname from method'; $sql .= 'order by methodid'; > my $sth = $dbh->prepare($sql) or die "Prepare fails for > stmt:\n\t\t$sql\nError = ", $DBI::errstr; > my $rv; > unless ($sth->execute) { > print"\n\tExecute fails for stmt:\n\t\t$sql\nError = ", $DBI::errstr; > $sth->finish; > $dbh->disconnect; > die "\n\t\tClean up finished\n"; > } > print "\t\t$rv\n\n" if $rv; > my %thehash; > my @row_ary; > my $row_ary; > my $key; > > while (@row_ary = $sth->fetchrow_array) { > $key = $row_ary[0]; > $thehash{$key} = $row_ary[1]; #replace prev. two lines with: $ra{$row_ary[0]} = [$row[1], $row[2]]; > } > $sth->finish; > $dbh->disconnect; This builds a hash of n two-element arrays, where n is "select count(methodid) from method". You can access the hash using (as the first index) the methodid you want, and the second index will be either 0 or 1, depending whether you want the method or sname (respectively) for that methodid: #based on the table printout from the first post: print $ra->{2}->[0]; # prints 'Progestin-Only Ocs' Print $ra->{2}->[1]; # prints 'POC' The reason I picked a hash of arrays is so it doesn't matter whether there are always as many rows as max(methodid) (i.e. no gaps in the sequence, otherwise you could use an array - see below), and the two-element array because you don't need the associative array functionality. You could just as easily create two local variables ($method,$sname) = (0,1) and access the array using the variables as the index. If you wanted an array of arrays: $ra[$row_ary[0]] = [$row[1], $row[2]]; #based on the table printout from the first post: print $ra->[2]->[0]; # prints 'Progestin-Only Ocs' Print $ra->[2]->[1]; # prints 'POC' Would do the trick. Either way should work, it just depends on how you want to access your data :) check out <http://www.perldoc.com/perl5.6.1/pod/perlreftut.html>. Hope that helps, -dave -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]