That will probably be the solution.
Thanks to all involved!
Don.
On Thu, 1 Nov 2001, David Marshall wrote:
> 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?
> > > >
> > >
> > >
> > >
> > >
> > >
> > >
>
>