|
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) ничего не придумали.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |