what about this I think this should work faster
_______________________________________________________________ SELECT count(1), build, room FROM Jun04 WHERE dept=22 GROUP BY room, build ________________________________________________________________ $q = $dbh->prepare($aboveQuery); $q->execute(); while (my @row=$q->fetchrow_array()){ $data{$row[2]}->{$row[1]} = $row[0]; } $q->finish(); LRMK ----- Original Message ----- From: "Wiggins d Anconia" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, June 16, 2004 9:59 PM Subject: RE: Counting help > > [..] > > > I will try and explain again what I am trying to do. > > > I read in a file with a list of > > > rooms....Then im trying to list the room once and then count > > > how many records match for the select statement and only > > > print the building once with a count in front of it.. > > > > > > db: > > > date build room dept > > > ## 211 30 22 > > > ## 211 30 22 > > > ## 444 50 05 > > > ## 1544 20 22 > > > ## 1544 20 22 > > > ## 333 30 22 > > > > > [..] > > > > > > My goal was to have this output: > > > For 30 : > > > 10BLD:211 > > > 1BLD:333 > > > For 20 : > > > 2BLD:1544 > > > > > > Thanks...... > > [..] > > > > Hi Rob, > > > > as Wiggins already mentioned - I guess the easiest way to solve this is > > to let your database do the counting/grouping. > > > > Just send a statement like this to your database: > > > > SELECT count(*), build > > FROM Jun04 > > WHERE dept=22 and room=20 > > GROUP by build > > > > Yeh that is what I was thinking. > > If this must be done in Perl for some reason, then I think the hangup > with respect to your code and the reason why moving the $cnt into the > loop is because you are sorting by the date rather than by the other > attributes, which means it is not possible to build the counts and allow > the loop scoping to reset it at the right time. > > Instead I would use a data structure, probably of HoH to store the > counts as you step through the list. > > Hint: > $counts->{$room}->{$build}++; > > foreach my $room (keys %$counts) { > print "Room: $room\n"; > foreach my $build (keys %{$counts->{$room}}) { > print "\t$build: $counts->{$room}->{$build}\n"; > } > } > > http://danconia.org > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>