The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"как сделать функцию подсчета записей в таблице?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"как сделать функцию подсчета записей в таблице?"  
Сообщение от Влад email(??) on 09-Фев-06, 12:14 
Есть табличка, выборка из которой дает такие вот строчки, два столбца:
id              Время        
1               2006-02-08 14:47:20
3               2006-02-08 15:48:30
17              2006-02-09 12:37:01
159             2006-02-09 08:17:30
229             2006-02-09 08:17:20
359             2006-02-09 09:11:30
370             2006-02-09 11:18:40
452             2006-02-09 17:10:50
.......
и так далее, очень много строк. Вывожу я их так:
my $sth = $dbh->prepare( "SELECT $col1,$col2 FROM table_log");
while ( my @row = $sth->fetchrow_array( ) ){print Tr( td(\@row));}

Помогите пожалуйста сделать следующее, чтобы вывод из таблички был такого вида, два столбца:

Дата          Кол-во записей
2006-02-08          2  
2006-02-09          6

Тоесть, чтобы за каждое число посчиталось кол-во записей. Я в перле еще не  совсем разобрался, подскажите пожалуйста, как такое можно запрограммировать? Огромное всем спасибо!


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "как сделать функцию подсчета записей в таблице?"  
Сообщение от chip email(ok) on 09-Фев-06, 12:51 
>Тоесть, чтобы за каждое число посчиталось кол-во записей. Я в перле еще
>не  совсем разобрался, подскажите пожалуйста, как такое можно запрограммировать?

Перл тут не причем. Смотреть в сторону SQL, а конкретно GROUP BY

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "как сделать функцию подсчета записей в таблице?"  
Сообщение от Влад email(??) on 09-Фев-06, 13:34 

>Перл тут не причем. Смотреть в сторону SQL, а конкретно GROUP BY
>

спасибо, это как раз то-что нужно. Только вот я не пойму, "GROUP BY"
должен сгруппировать по определенному значению, но у меня столбец даты представленны в виде "дата время". А как я понимаю, что-бы "group by"  
сработал так как именно мне необходимо, столбец даты должен быть в виде "2006-02-08" , а как тогда в этом случае отсечь в запросе ненужные мне "14:47:20"?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "как сделать функцию подсчета записей в таблице?"  
Сообщение от chip email(ok) on 09-Фев-06, 14:44 
>
>>Перл тут не причем. Смотреть в сторону SQL, а конкретно GROUP BY
>>
>
>спасибо, это как раз то-что нужно. Только вот я не пойму, "GROUP
>BY"
>должен сгруппировать по определенному значению, но у меня столбец даты представленны в
>виде "дата время". А как я понимаю, что-бы "group by"
>сработал так как именно мне необходимо, столбец даты должен быть в виде
>"2006-02-08" , а как тогда в этом случае отсечь в запросе
>ненужные мне "14:47:20"?

Полагаю, что-то вроде:
select DATE_FORMAT(create_date, '%Y-%m-%d'),count(create_date) from table_log group by DATE_FORMAT(create_date, '%Y-%m-%d');

, где
create_date - соотвественно столбец хранящий дату. Вообще в остальном вариации на тему.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "как сделать функцию подсчета записей в таблице?"  
Сообщение от madskull (ok) on 09-Фев-06, 14:45 
Да, что-то про SQL я и не подумал, сразу в perl бросился :)

>"2006-02-08" , а как тогда в этом случае отсечь в запросе
>ненужные мне "14:47:20"?

Группируй по функции, например GROUP BY left(field,10), если это строка.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "как сделать функцию подсчета записей в таблице?"  
Сообщение от Влад email(??) on 10-Фев-06, 11:38 
>Группируй по функции, например GROUP BY left(field,10), если это строка.

Отлично!, получилось!! Если можно, еще подскажите пожалуйста, как запрограммировать представление 3х таблиц (по два столбца каждая) в одной таблице (с одним столбцом). Как бы три выборки с разными критериями на одной страничке. Здесь как я понимаю уже sql не причем...
Чтобы получилось при выводе на странице примерно вот так:

столбец1                    столбец2               столбец3        
  
2006-02-08   2         2006-02-08  10       2006-02-08   5    
2006-02-09   6         2006-02-09  20       2006-02-09   0
2006-02-10   3         2006-02-09   5       2006-02-10   0
...                                 ...                               ...
  

Я бы мог просто сделать на одной странице последовательный вывод 3х выборок, но читать когда 3 столбца и в каждом по два гораздо приятнее :)
Подскажите пожалуйста если знаете.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "как сделать функцию подсчета записей в таблице?"  
Сообщение от madskull (ok) on 09-Фев-06, 14:37 
используй хэш.
примерно так:

my $sth = $dbh->prepare( "SELECT $col1,$col2 FROM table_log");
my %h = ();
while ( my @row = $sth->fetchrow_array( ) ){
  $row[1] =~ /^\d+\s+(.+?)\s/;
  $h{$1}++;
}
foreach( keys %h ) {
print Tr( td([$_, $h{$_}] ) );
}

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "как сделать функцию подсчета записей в таблице?"  
Сообщение от Влад email(??) on 09-Фев-06, 15:19 

большое спасибо, буду пробовать!
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "как сделать функцию подсчета записей в таблице?"  
Сообщение от Влад email(??) on 10-Фев-06, 13:17 

Отлично!, получилось!! Если можно, еще подскажите пожалуйста, как запрограммировать представление 3х таблиц (по два столбца каждая) в одной таблице (с одним столбцом). Как бы три выборки с разными критериями на одной страничке. Здесь как я понимаю уже sql не причем...
Чтобы получилось при выводе на странице примерно вот так:

столбец1                    столбец2               столбец3        
  
2006-02-08   2         2006-02-08  10       2006-02-08   5    
2006-02-09   6         2006-02-09  20       2006-02-09   0
2006-02-10   3         2006-02-09   5       2006-02-10   0
...                                 ...                               ...
  

Я бы мог просто сделать на одной странице последовательный вывод 3х выборок, но читать когда 3 столбца и в каждом по два гораздо приятнее :)
Подскажите пожалуйста если знаете.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "как сделать функцию подсчета записей в таблице?"  
Сообщение от madskull (ok) on 10-Фев-06, 16:23 
Попробуй через хеши, опять же.

Писать все решение просто лень. Посмотри на то, что я приводил. Сделай три запроса, и результаты в $h{$1}[0]++, $h{$1}[1]++ и т.д.
а вывод:
print Tr( td([$_, $h{$_}[0], $_, $h{$_}[1], $_, $h{$_}[2] ] ) );
Примерно так, в общем.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру