Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 18:50   #1
lyle_200490
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 21
По умолчанию SQL запрос с двойным COUNT

Есть 2 таблицы:

1 таблица - Task
id_t Автоинкримент
From_ числовое
mark числовое (принимает только 1 или 2)

Значения:
1 1 1
2 1 1
3 2 1
4 2 2
5 1 2

2 таблица - FIO
id_f автоинкримент
FIO_ строка

Значения:
1 Иванов
2 Петров

Нужно получить на выходе (в виде статистики):
ФИО Количество(mark=1) Всего(по группе FIO)
Иванов 3 4
Петров 1 2

Пишу запрос:
Код:
Select FIO.FIO_, COUNT(task.mark), COUNT(FIO.FIO_)
from Task, FIO
where (Task.From=FIO.id_f) AND (task.mark=1)
GROUP BY taskFrom.FIO
Но почему то выводит:
Иванов 3 3
Петров 1 1

Подскажите в чем ошибка?

PS
я понимаю, что проблема в "AND (task.mark=1)", но как сделать не знаю подскажите пожалуйста.
lyle_200490 вне форума Ответить с цитированием
Старый 24.11.2010, 18:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

По-моему так:
Код:
Select FIO.FIO_, COUNT(task.mark), COUNT(FIO.FIO_)
from Task
left join FIO on (task.From_=FIO.ID_f)
where (task.mark=1)
GROUP BY taskFrom.FIO
Только я не понял откуда taskFrom всплыло...
Может нужно
Код:
GROUP BY task.From_
?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.11.2010, 19:03   #3
lyle_200490
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 21
По умолчанию

да это я ошибся случайно при наборе
щас попробую
lyle_200490 вне форума Ответить с цитированием
Старый 24.11.2010, 19:07   #4
lyle_200490
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 21
По умолчанию

что то не получается((
lyle_200490 вне форума Ответить с цитированием
Старый 24.11.2010, 20:47   #5
lyle_200490
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 21
По умолчанию

Все вопрос решен

select fio,
(select count(*) from task where Task.From=FIO.id_f and task.mark=1),
(select count(*) from task where Task.From=FIO.id_f)
from fio
where
(select count(*) from task where Task.From=FIO.id_f and task.mark=1)!=0
lyle_200490 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL Count() novice2010 Помощь студентам 1 23.09.2010 07:30
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
sql запрос BredoZavR БД в Delphi 3 28.06.2009 19:47
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15