Имя: Пароль:
IT
Веб-мастеринг
php mysql обход результата запроса по группировкам
0 Помогите
 
01.12.14
06:05
Как это сделать на PHP?
1 Wobland
 
01.12.14
06:16
а как запрос выглядит?
2 Помогите
 
01.12.14
06:21
Я не в курсе
3 Wobland
 
01.12.14
06:23
а что собираешься делать при обходе?
4 Помогите
 
01.12.14
06:26
Не понял смысла вопроса
5 Wobland
 
01.12.14
06:28
на зачем тебе обход результата запроса по группировкам?
6 Помогите
 
01.12.14
06:34
Для вывода результатов запроса на экран.
7 Wobland
 
01.12.14
06:36
(6) не зная даже имена полей?
8 Помогите
 
01.12.14
06:37
(7) зачем не зная имена полей?
9 Wobland
 
01.12.14
06:37
(8) ну ты ж не в курсе
10 Помогите
 
01.12.14
06:38
это не про имена полей
11 Помогите
 
01.12.14
06:46
Если своими словами, то запрос и алгоритм такие:

"Выбрать Номер, Дата
из Документы
Сгруппировать по Дате"

ВыборкаПоДате = РезультатЗапроса.Выбрать по группировке (Дата);
Пока ВыборкаПоДате.Следующий() Цикл
{
  Вывести (ВыборкаПоДате.Дата);
  ВыборкаПоНомеру = ВыборкаПоДате.Выбрать()
  Пока ВыборкаПоНомеру .Следующий() Цикл
  {
    Вывести (ВыборкаПоНомеру.Номер);
  }
}
12 Помогите
 
01.12.14
06:48
Результат должен получиться примерно такой:

По дате 01.01.1980 такие номера:
  Док-00001
  Док-00002
  Док-00003
По дате 02.01.1980 такие номера:
  Док-00004
  Док-00005
По дате 03.01.1980 такие номера:
  Док-00006
13 Wobland
 
01.12.14
06:49
вот я и спрашиваю: какой аналог ЭТОГОВ в mysql?
14 Помогите
 
01.12.14
06:50
да, я видел
15 sda553
 
01.12.14
07:18
group by. ... with rollup
16 Помогите
 
01.12.14
07:32
(15) Это добавит общий итог. Не то.
17 ASV
 
01.12.14
07:38
(12) в запросе сортировать по дате
при выводе сравнивать дату с предыдущим значением, если изменилась выводить заголовок
18 Поpyчик-4
 
01.12.14
07:43
(13) В mysql нет ЭТОГОВ.
19 Помогите
 
01.12.14
07:48
(17) Это понятно. Но нужно чтобы было красиво, как в 1С
20 Поpyчик-4
 
01.12.14
07:51
(0) Обычно в запросе сортируют по какому-то полю, потом при обходе выборки делают хэш-массив со значениями этого поля

phpbb2

function make_jumpbox($action, $match_forum_id = 0)
{
    global $db, $userdata, $template, $nav_links, $phpEx, $lang;

    $sql = "SELECT c.cat_title, f.*
        FROM " . FORUMS_TABLE . " f, " . CATEGORIES_TABLE . " c
        WHERE c.cat_id = f.cat_id
        AND f.auth_view <= " . AUTH_REG . "
        ORDER BY c.cat_order, f.forum_order";
    if ( !($result = $db->sql_query($sql, false, true)) )
    {
        message_die(GENERAL_ERROR, "Couldn't obtain categories/forums information.", "", __LINE__, __FILE__, $sql);
    }

    $jb_rows = array();
    $last_cat_id = false;
    while ( $row = $db->sql_fetchrow($result) )
    {
        if ( $last_cat_id !== $row['cat_id'] )
        {
            $last_cat_id = $row['cat_id'];
            $jb_rows[] = array();
        }
        $jb_rows[count($jb_rows) - 1][] = $row;
    }

    if ( empty($jb_rows) )
    {
        return;
    }

    $template->set_filenames(array(
        'jumpbox' => 'jumpbox.tpl')
    );
    $template->assign_vars(array(
        'L_GO' => $lang['Go'],
        'L_JUMP_TO' => $lang['Jump_to'],
        'L_SELECT_FORUM' => $lang['Select_forum'],
        'S_SELECT_FORUM' => POST_FORUM_URL,

        'S_JUMPBOX_ACTION' => append_sid($action),
    ));

    $last_cat_id = false;
    foreach ($jb_rows as $k => $cat)
    {
        if ( empty($cat) )
        {
            continue;
        }
        $template->assign_block_vars('jb_cat', array(
            'CAT_TITLE' => $cat[0]['cat_title'],
        ));
        foreach ($cat as $l => $forum)
        {
            $template->assign_block_vars('jb_cat.jb_forum', array(
                'FORUM_ID' => $forum['forum_id'],
                'FORUM_SEL' => $match_forum_id && $match_forum_id == $forum['forum_id'] ? ' selected="selected" ' : '',
                'FORUM_TITLE' => $forum['forum_name'],
            ));
            //
            // Add an array to $nav_links for the Mozilla navigation bar.
            // 'chapter' and 'forum' can create multiple items, therefore we are using a nested array.
            //
            $nav_links['chapter forum'][$forum['forum_id']] = array (
                'url' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=" . $forum['forum_id']),
                'title' => $forum['forum_name'],
            );
        }
    }

    $template->assign_var_from_handle('JUMPBOX', 'jumpbox');
    return;
}
21 Поpyчик-4
 
01.12.14
07:53
(19) Красиво, да? Это примерно твоя задача.
22 Помогите
 
01.12.14
08:04
(20) >> Обычно в запросе сортируют по какому-то полю, потом при обходе выборки делают хэш-массив со значениями этого поля

Спасибо!
Только пример к (17) ответу больше подходит, не красиво. Ну да ладно.
23 ASV
 
01.12.14
08:06
(19)
SELECT DISTINCT  1 as u, dt, dtas kod  FROM tabl
UNION
(SELECT 2 as u, dt,kod FROM tabl LIMIT 0,200)
order BY dt, u
24 Поpyчик-4
 
01.12.14
08:18
(23) В phpbb 2 и 3 запросы с объединениями таблиц по каким-то причинам почти не применяются. Вероятно, из-за тяжести исполнения.
Впрочем, потом гляну скрипты.
25 ASV
 
01.12.14
08:21
(24) правильно в(23) будет выполнение 2х запросов вместо одного. результаты все равно потом обрабатывать.
только(0) считает что это красиво
26 Помогите
 
01.12.14
08:22
(23) Это зачем? Можно так:

SELECT dt, kod
FROM tabl
GROUP BY dt, kod
WITH ROLLUP
27 Помогите
 
01.12.14
08:23
(25) Не ври, я так не считаю
28 Поpyчик-4
 
01.12.14
08:29
(25) Сейчас прошвырнулся по скриптам phpBB3. Нашёл только два упоминания UNION в одном административном скрипте, то есть редко используемом в работе.
29 ASV
 
01.12.14
08:32
(26) теперь интересно посмотреть код php, чтобы вывести итоги перед значениями, как (12)
30 Помогите
 
01.12.14
08:40
(29) по 23, аналогично.
31 Asmody
 
01.12.14
08:46
а СКД на php нету часом?
32 Помогите
 
01.12.14
08:50
(29) задом наперед выбирать строки.
33 stix2010
 
01.12.14
09:23
(0) спецы 77 тебе подскажут, там в ТЗ что только не вытворяют, array вместо ТЗ и вперед
34 Помогите
 
01.12.14
13:13
Похоже лучше чем (17) ничего не придумали.
Основная теорема систематики: Новые системы плодят новые проблемы.