I'll second the suggestion made a few messages back about storing your results in some other data structure (as opposed to re-traversing the data structure that DBI gives you).
In your circumstances, I'd probably put the retrieved rows in a hash of arrays (keyed by group number) before doing anything else. Then I'd examine each array of records in the group and delete it from the hash if it didn't qualify. Then the HoA that is left over can be traversed for whatever the final output is. The code might look something like this: my %groups; while (my $hashref = $sth->fetchrow_hashref) { push @{$groups{$hashref->{group_num}}}, $hashref; } then later... foreach my $group_number (keys %groups) { delete $groups{$group_number} unless group_is_OK($groups{$group_number}); } then finally... spew_group($_) foreach values %groups; YMMV on exact implementation. In similar implementations, I will often have other stuff in the data structure beyond that which I got directly out of the database. It all depends. At 01:26 PM 11/1/01 -0600, Don Seiler wrote: >Perhaps I'm missing it, then. > >basically my query is this: > >select cust_no, acct_type, acct_status, group_num >from cust,acct >where cust.cust_no=acct.cust_no >order by group_num > >the values of acct_type and acct_status for all of the records in >a group determine if I want that group or not. I don't think I can make >that determination until I've gone through the recordset though. > >-- >Don Seiler [EMAIL PROTECTED] >Database Administrator / Sr Software Engineer >NSightTel Billing LLC Phone: 920.617.7501 >1580 Mid Valley Drive Fax: 920.617.7493 >De Pere, WI 54115 Cell: 920.606.3240 >Pager: [EMAIL PROTECTED] / 920.613.2000 > > >On Thu, 1 Nov 2001, Marcelo Guelfi wrote: > > > > > Are you sure that you can't use the GROUP BY clause? > > > > Saludos, > > Marcelo. > > > > > > > > > > > > > > > > > > > > > > > > "Don Seiler" > > <Don.Seiler@Ce To: Michael Peppler > <[EMAIL PROTECTED]> > > llcom.com> cc: Marcelo > Guelfi/Uruguay/Contr/IBM@IBMUY, <[EMAIL PROTECTED]> > > Subject: Re: Looping > through recordset twice > > 01/11/2001 > > 16:13 > > Please respond > > to "Don > > Seiler" > > > > > > > > > > > > Basically, when I get to a new group number. The record set is ordered by > > group number, so all records in a group are together. As I'm looping > > through records in a group, I do some evaluation and add values to > > variables. When I get to a new group number, I look at the values. If > > they meet my criteria I add the last group number to an array. > > > > Then when I'm done I planned to loop again through the record set and if > > the group number matches one in the array I'd print it. > > > > This is probably horribly inefficient and I'm leaning towards saving the > > records to a tmp array and if they qualify saving that to master array for > > later printing. > > > > Don. > > > > On Thu, 1 Nov 2001, Michael Peppler wrote: > > > > > Don Seiler writes: > > > > Actually the nature of the problem is what stopped me from doing this. > > > > > > > > I won't know which records I want until I look at the group of them. > > > > > > > > Example: I have a table of records. There is a "groupnum" column. > > Many > > > > records have the same "groupnum", i.e. they are in the same group. > > I'm > > > > only interested in selecting the group as a whole. I will only know > > if I > > > > want this group based on examining all of the records for that group. > > > > > > Hmmm - what condition determins that a group is complete? > > > > > > > > > > > > > > >