On Thu, Oct 27, 2011 at 9:36 PM,  <p...@umpquanet.com> wrote:
> On Thu, Oct 27, 2011 at 09:17:21PM -0500, tamouse mailing lists wrote:
>>
>> That said, I think there must be a way to do this in SQL.
>
> Absolutely, there's a way to do this in SQL;
>
> "select contract, sum(1) from test_table group by contract"
>
>
> But as I said, simply counting is not the intent of the actual
> processing that will be done.
>
> I need to find a method that can iterate through a large number
> of records and process each record (in whatever way I choose to
> define) without running out of RAM.  I only need to access one
> record at a time, so I thought this would be pretty trivial,
> and was surprised to find that the routine ran out of memory.
>
> This simple counting exercise is merely a test of the loop
> algorithm so that I can do a 'cmp' or 'diff' comparison of the
> output of the PHP versus the output of the SQL to verify that in
> fact the PHP algorithm is indeed finding and processing each
> record (and thus arriving at the same per-contract counts that
> the SQL statement does).
>
> I will experiment with your suggestions.
>
> Thank you,
>
> Jim
>
>

Ah, okay, did not get that -- sorry.

Still, an inner and outer loop don't really seem necessary here, as
you're spinning through one set of data, there doesn't seem a need to
run through it that way. A more traditional method is to do something
like:

$last_contract = '';
while ($row = $msql_fetch_assoc($results) {
    if ($last_contract == $row['contract]) {
        // do what ever you'd do with the same contract
    } else {
       $last_contract = $row['contract'];
       // do what ever you'd do with the new contract
    }
}

assuming you are ordering by contract as in the example select.

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to