Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно ли одним запросом сделать 2 счетчика?
 
 автор: kis-kis   (06.11.2008 в 11:43)   письмо автору
 
 

Можно ли одним запросом сделать 2 счетчика?
1 считал бы все строки таблицы, а второй только те, которые были добавлены за сегодня?
Заранее спасибо.

  Ответить  
 
 автор: Gust   (12.11.2008 в 15:59)   письмо автору
 
   для: kis-kis   (06.11.2008 в 11:43)
 

поэксперементировал и вот

SELECT count(if(`day`=$today,'$today','')) 
FROM tdl
Group By if(`day`=$today,'$today','') 

вернет 2 записи одна из них - за today, их сумма - все строки

  Ответить  
 
 автор: Root   (12.11.2008 в 17:03)   письмо автору
 
   для: Gust   (12.11.2008 в 15:59)
 

>поэксперементировал и вот

>SELECT count(if(`day`=$today,'$today','')) 
>FROM tdl
>Group By if(`day`=$today,'$today','') 
>
>вернет 2 записи одна из них - за today, их сумма - все строки

уверены?

  Ответить  
 
 автор: Gust   (13.11.2008 в 07:21)   письмо автору
 
   для: Root   (12.11.2008 в 17:03)
 

>уверены?
написал же поэксперементировал, у меня работает
вот немного доработал:

SELECT count(if(`day`=$today,0,1)) , if(`day`=$today,0,1) as cnt
FROM tdl 
Group By cnt
Order By cnt

тогда в 1 записи будет счетчик $today

>можно, только нужно ли?
>

>select sum( if( day(`date_column`) = day(now()), 1, 0) ) as `today`, count(*) as `total` from tbl_name;
>

а так у меня не заработало (и не понятно почему должно работать)

  Ответить  
 
 автор: Root   (13.11.2008 в 14:07)   письмо автору
 
   для: Gust   (13.11.2008 в 07:21)
 

>

>SELECT count(if(`day`=$today,0,1)) , if(`day`=$today,0,1) as cnt
>FROM tdl 
>Group By cnt
>Order By cnt
>


что за поле такое `day`?
что такое $today?
покажите ваш эксперимент полностью.

>>

>>select sum( if( day(`date_column`) = day(now()), 1, 0) ) as `today`, count(*) as `total` from tbl_name;
>>

>а так у меня не заработало (и не понятно почему должно работать)


CREATE TABLE `date_test` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `date_column` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB;

insert into date_test values(null, now());
insert into date_test values(null, now() - interval 1 day);

select sum( if( day(`date_column`) = day(now()), 1, 0) ) as `today`, count(*) as `total` from date_test;

  Ответить  
 
 автор: Gust   (14.11.2008 в 07:53)   письмо автору
 
   для: Root   (13.11.2008 в 14:07)
 

>что за поле такое `day`?
>что такое $today?
>покажите ваш эксперимент полностью.
для вашей базы:

SELECT count( if( day( `date_column` ) = day( now( ) ) , 0, 1 ) ) , if( day( `date_column` ) = day( now( ) ) , 0, 1 ) AS cnt
FROM date_test
GROUP BY cnt
ORDER BY cnt

>select sum( if( day(`date_column`) = day(now()), 1, 0) ) as `today`, count(*) as `total` from date_test;
признаю, это практичней и изящней

  Ответить  
 
 автор: Trianon   (14.11.2008 в 10:07)   письмо автору
 
   для: Gust   (14.11.2008 в 07:53)
 

Практичней , изящней и быстрее во всех смыслах было бы получить эти счетчики двумя независимыми запросами. Но это скорее к автору темы.

  Ответить  
 
 автор: Root   (12.11.2008 в 17:24)   письмо автору
 
   для: kis-kis   (06.11.2008 в 11:43)
 

можно, только нужно ли?

select sum( if( day(`date_column`) = day(now()), 1, 0) ) as `today`, count(*) as `total` from tbl_name;

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования