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

Форум MySQL

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

 

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

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

тема: масс COUNT по одной таблице
 
 автор: sl1p   (14.01.2010 в 21:27)   письмо автору
 
 

Хочу подсчитать сколько записей с разным значением поля `status`

SELECT
COUNT(r.`id`) as ct,
COUNT(t_1.`id`) as ct_1,
COUNT(t_2.`id`) as ct_2,
COUNT(t_3.`id`) as ct_3,
COUNT(t_4.`id`) as ct_4,
COUNT(t_5.`id`) as ct_5,
COUNT(t_6.`id`) as ct_6
FROM `flat_reserves` as r
JOIN `flat_reserves` as t_1 ON t_1.`status` = 1
JOIN `flat_reserves` as t_2 ON t_2.`status` = 2  
JOIN `flat_reserves` as t_3 ON t_3.`status` = 3
JOIN `flat_reserves` as t_4 ON t_4.`status` = 4
JOIN `flat_reserves` as t_5 ON t_5.`status` = 5
JOIN `flat_reserves` as t_6 ON t_6.`status` = 6

но получаю :
Array
(
    [ct] => 800
    [ct_1] => 800
    [ct_2] => 800
    [ct_3] => 0
    [ct_4] => 800
    [ct_5] => 800
    [ct_6] => 800
)

с JOIN 0 с RIGHT 350.. непонятно вобще откуда такое берётся :)
там где ct_3 там да, 0 записей а в остальных разное, небольшое количество 1-10

  Ответить  
 
 автор: heed   (14.01.2010 в 23:04)   письмо автору
 
   для: sl1p   (14.01.2010 в 21:27)
 

SELECT COUNT(NULLIF(id=1, 0)),
    COUNT(NULLIF(id=2,0)),
    COUNT(NULLIF(id=3, 0)),
    COUNT(NULLIF(id=4, 0)),
    COUNT(NULLIF(id=5, 0))
FROM flat_reserves;

  Ответить  
 
 автор: sl1p   (15.01.2010 в 00:04)   письмо автору
 
   для: heed   (14.01.2010 в 23:04)
 

оу, весьма благодарен! :)

был ещё благодарнее(хотя куда ещё:))) если бы Вы объяснили функцию, озадачила ибо :)

  Ответить  
 
 автор: heed   (15.01.2010 в 00:37)   письмо автору
 
   для: sl1p   (15.01.2010 в 00:04)
 

COUNT() считает сколько раз был не NULL
, а операторы сравнения могут возвращать только 0 ,
Поэтому NULLIF() соторая сравнивает сравнение с 0

,Вместо COUNT() впринципе можно использовать SUM(id=num)
//но вопрос был про COUNT() ,)

  Ответить  
 
 автор: sl1p   (15.01.2010 в 00:39)   письмо автору
 
   для: heed   (15.01.2010 в 00:37)
 

спасибо, не знал.. интересно!:)

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

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