Re: Database/Table Design for Global Country Statistics

Поиск
Список
Период
Сортировка
От Stefan Schwarzer
Тема Re: Database/Table Design for Global Country Statistics
Дата
Msg-id A00B0CCB-38F2-40F6-9856-37EF91B86950@grid.unep.ch
обсуждение исходный текст
Ответ на Re: Database/Table Design for Global Country Statistics  (Richard Huxton <dev@archonet.com>)
Ответы Re: Database/Table Design for Global Country Statistics  (Richard Huxton <dev@archonet.com>)
Список pgsql-general
>>> $curr_yr = -1
>>> $cols = array();
>>> while (<fetch rows>) {
>>>   if ($row['year'] != $curr_yr) {
>>>     if (sizeof($cols) > 0) { display_table_row($cols); }
>>>     $cols = array();
>>>     $curr_year = $row['year'];
>>>   }
>>>   $cols[] = $row['value'];
>>> }
>>> // handle possible last row of table
>>> if (sizeof($cols) > 0) { display_table_row($cols); }
>>>
>> Thanks for the code. I got it working with a couple of changes.
>> But then I realized that with the new table design I can't anymore
>> easily sort by a given year (1970 or 2000). This is surely one of
>> the advantages of the "old" design, that the use via PHP was quite
>> straight forward.
>> Do I have to transfer the query results into a PHP array to sort
>> it in there, then?
>
> Umm - not sure what you're after. What's wrong with one of:
>   SELECT ... ORDER BY year, value
>   SELECT ... ORDER BY value, year
>
> Or did you want a particular year pulled out of the general list,
> in which case try something like:
>   SELECT ... ORDER BY (year = 1970), year, value
>   SELECT ... ORDER BY (year <> 1970), year, value
> This works because booleans are considered sortable too.

Wow, didn't know about the "(year = 1970)" thing. Cool. But
nevertheless, the problem is then with the PHP code above; a
different sorting in the query result, means as well a different
coding. Or I have completely miscoded your draft. But I don't see how
it would handle a resulting array of any order - by year, by name,
ascending, descending... I guess I need to go with the PHP array, no?

        $current_country = -1;
        $count = -1;
        $cols = array();

        while ($row = pg_fetch_array($result))
        {
            if ($row['name'] != $current_country)
            {
                if (sizeof($cols) > 0)
                {
                    $count++;
                    $code7 .= display_table_row($current_country, $cols, $count,
$selectedDataset -> name, $selectedID, $selectedTime);
                }
                $cols = array();
                $current_country = $row['name'];
            }
            $cols[] = $row['value'];
        }

        // handle possible last row of table
        if (sizeof($cols) > 0)
        {
            $code7 .= display_table_row($current_country, $cols, ($count + 1),
$selectedDataset -> name, $selectedID, $selectedTime);
        }



В списке pgsql-general по дате отправления:

Предыдущее
От: Richard Huxton
Дата:
Сообщение: Re: Database/Table Design for Global Country Statistics
Следующее
От: Richard Huxton
Дата:
Сообщение: Re: Database/Table Design for Global Country Statistics