|
|
|
| Можно ли одним запросом сделать 2 счетчика?
1 считал бы все строки таблицы, а второй только те, которые были добавлены за сегодня?
Заранее спасибо. | |
|
|
|
|
|
|
|
для: kis-kis
(06.11.2008 в 11:43)
| | поэксперементировал и вот
SELECT count(if(`day`=$today,'$today',''))
FROM tdl
Group By if(`day`=$today,'$today','')
|
вернет 2 записи одна из них - за today, их сумма - все строки | |
|
|
|
|
|
|
|
для: Gust
(12.11.2008 в 15:59)
| | >поэксперементировал и вот
>SELECT count(if(`day`=$today,'$today',''))
>FROM tdl
>Group By if(`day`=$today,'$today','')
>
| >вернет 2 записи одна из них - за today, их сумма - все строки
уверены? | |
|
|
|
|
|
|
|
для: 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;
>
|
а так у меня не заработало (и не понятно почему должно работать) | |
|
|
|
|
|
|
|
для: 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;
|
| |
|
|
|
|
|
|
|
для: 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;
признаю, это практичней и изящней | |
|
|
|
|
|
|
|
для: Gust
(14.11.2008 в 07:53)
| | Практичней , изящней и быстрее во всех смыслах было бы получить эти счетчики двумя независимыми запросами. Но это скорее к автору темы. | |
|
|
|
|
|
|
|
для: 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;
|
| |
|
|
|