Re: How to store query results in an array?
- From: jkstill@xxxxxxxxxx (Jared Still)
- Date: Wed, 25 May 2005 23:29:01 -0700
Here's a fun and slightly obfuscated method to do that:
my $usql=q{select username from dba_users};
my $aryRef = $dbh->selectall_arrayref($usql);
my @users = map { $aryRef->[$_][0] } 0..$#{$aryRef};
my $newSql = q{select from users where username in ('}
. join(q{','},@users) . q{')};
print "$newSql\n";
Jared
On Wed, 2005-05-25 at 11:39, ricardd@xxxxxxxxxxxxxxx wrote:
> Hello dbi-users,
> I'm relatively new to Perl DBI so bear with me as this might be very
> simple for the gurus.
>
> I would like to use the results of a query as an input to another query's
> WHERE ... IN clause. This is simple enough but I can't figure out how to
> avoid extracting and formatting each row from the first query results.
> That is, how can I avoid doing something tedious like this:
>
> # ***** BEGIN EXAMPLE ************
> my $sql1 = qq{SELECT ....};
> my $sth1 = $dbh->prepare($sql1);
> $sth1->execute();
>
> my @results;
> while ( my @row1 = $sth1->fetchrow_array ) {
> push(@results, "\'" . @row1[0] . "\'");
> }
>
> my $resultsformatted=join(",",@results);
>
> my $sql2 = qq{SELECT * FROM ... WHERE ... IN ($resultsformatted)};
> # ***** END EXAMPLE ************
>
> I tried "selectall_arrayref" but it doesn't help me since there is a
> reference to each item in the array.
>
> I tried "dump_results" but the output contains an extra row that gives the
> number of rows dumped, hence the results can't be used in the second
> query.
>
> What I really want is a "neat_list" but I can't figure out how to assign
> the results of the first query to an array that I can then pass to
> "neat_list".
>
> Something similar is possible in R/Splus using ODBC, the results of a
> query can assigned to a data frame without accessing each row. How can I
> do the same using Perl DBI?
>
> Thanks in advance.
>
> Daniel Ricard
>
.
- Follow-Ups:
- RE: How to store query results in an array?
- From: Ronald J Kimball
- RE: How to store query results in an array?
- References:
- How to store query results in an array?
- From: ricardd
- How to store query results in an array?
- Prev by Date: Re: problem with DBD::Oracle
- Next by Date: Re: DBD::Oracle patch
- Previous by thread: How to store query results in an array?
- Next by thread: RE: How to store query results in an array?
- Index(es):
Relevant Pages
|
|