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

Форум MySQL

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

 

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

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

тема: помогите с count()
 
 автор: ProtoTeeP   (19.11.2007 в 13:13)   письмо автору
 
 

никак не могу сделать запрос.

мне нужно подсчитать сколько в поле yes пустых (NULL) и непустых значений в первой таблице (table_1),
при условии что поле end во второй таблице (table_2) равно NULL. таблицы связаны по id

table_1.id = table_2.id



помогите, если не трудно.

пока моих знаний хватило только на это:

SELECT `id` FROM `tabl_1` where `end` is null

SELECT tabl_1.id FROM `tabl_1`,`tabl_2`  where tabl_1.end is null AND tabl_1.id = tabl_2.id AND tabl_2.end is null ORDER BY tabl_1.id


т.е. 2 запроса. узнаю сколько всего ответов приходит, потом с помощью php узнаю количество пустых и не пустых.

   
 
 автор: cheops   (19.11.2007 в 15:37)   письмо автору
 
   для: ProtoTeeP   (19.11.2007 в 13:13)
 

Запрос
SELECT COUNT(*) FROM tabl_1

вернёт количество записей в таблице tabl_1, запрос
SELECT COUNT(`yes`) FROM tabl_1

вернёт количество записей, с полем `yes` отличных от NULL.
PS Т.е. всё равно придётся осущестувлять два запроса.

   
 
 автор: Trianon   (19.11.2007 в 20:21)   письмо автору
 
   для: ProtoTeeP   (19.11.2007 в 13:13)
 


SELECT tabl_1.yes IS NULL AS empty,
       COUNT(`tabl_1`.`id`) AS cnt
  FROM tabl_1 JOIN tabl_2 ON tabl_1.id = tabl_2.id
WHERE tabl_2.end IS NULL
GROUP BY empty

   
 
 автор: ProtoTeeP   (20.11.2007 в 06:20)   письмо автору
 
   для: Trianon   (19.11.2007 в 20:21)
 

спасибо большое, за советы...
но что-то не работает. результат приходит неправильный.

я поступил так:

SELECT 
COUNT(IFNULL(tabl_1.yes,0)) as n1, 
COUNT(tabl_2.end) as n2 
FROM `tabl_1`,`tabl_2` 
where 
tabl_1.yes is null 
AND 
tabl_1.id = tabl_2.id 
order by `end`


вроде все работает... но правильно ли я сделал?

   
 
 автор: Trianon   (20.11.2007 в 08:03)   письмо автору
 
   для: ProtoTeeP   (20.11.2007 в 06:20)
 

Как описали задачу, так я и ответил.
Чтобы понять, что не так, приводите дамп краткого иллюстрирующего примера таблицы,
и ответ, который ожидаете получить.

   
Rambler's Top100
вверх

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