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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2009, 17:58   #1
natishka
Пользователь
 
Регистрация: 05.08.2009
Сообщений: 16
По умолчанию select по многим условиям

Помогите дописать запрос, уже долго сижу, как сделать не догадываюсь.
Нужно вывести фамилии сотрудников (заданной классификации), сортированные по загруженности работой. Загрузка определяется путем суммирования единиц работы. Вот мои наработки

Код:
SELECT sotr.famsotr, Sum(spisok.kolich) AS [Sum-kolich], naryd.idstatus, klassif.klassif
FROM klassif INNER JOIN (sotr LEFT JOIN (naryd LEFT JOIN spisok ON naryd.idnaryd = spisok.idnaryd) ON sotr.idsotr = naryd.idsotr) ON klassif.idklass = sotr.idklass
GROUP BY sotr.famsotr, naryd.idstatus, klassif.klassif
HAVING (((klassif.klassif)=[rkc]))
ORDER BY Sum(spisok.kolich);
Есть таблица status , ее значения 1, 2, 3. Мне нужно чтобы выводились значения всех статусов, но при этом spisok.kolich должно суммироваться только у статуса 2. В моем примере суммируется у всех значений статуса.
А как написать чтобы у значения 2 суммировалась, а у значений 1, 3 и null ничего не суммировалось
natishka вне форума Ответить с цитированием
Старый 06.09.2009, 18:03   #2
natishka
Пользователь
 
Регистрация: 05.08.2009
Сообщений: 16
По умолчанию

пожалуйста подскажите как

Последний раз редактировалось natishka; 06.09.2009 в 18:06.
natishka вне форума Ответить с цитированием
Старый 06.09.2009, 18:34   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так, если я правильно понял задачу:
разбиваете запрос на два запроса,
которые объединяете через UNION
примерно так:
Код:
SELECT sotr.famsotr, Sum(spisok.kolich) AS [Sum-kolich], naryd.idstatus, klassif.klassif
FROM .... where naryd.idstatus = 2
UNION ALL
SELECT sotr.famsotr, spisok.kolich AS [Sum-kolich], naryd.idstatus, klassif.klassif
FROM .... where coalesce(naryd.idstatus,1)<> 2
разумеется, это только идея, надо из второго подзапроса выкинуть группировку по idstatus, может ещё что-то подправить прийдётся, но, думаю, что данный алгоритм Вам подойдёт..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.09.2009, 18:39   #4
natishka
Пользователь
 
Регистрация: 05.08.2009
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
FROM .... where coalesce(naryd.idstatus,1)<> 2
мне не совсем понятна эта строчка
natishka вне форума Ответить с цитированием
Старый 06.09.2009, 19:11   #5
natishka
Пользователь
 
Регистрация: 05.08.2009
Сообщений: 16
По умолчанию

Фамили должны выводиться из всех статусов, и даже у те где вообще нет никакого статуса. Главное чтоб считалась kolich только там, где status = 2
natishka вне форума Ответить с цитированием
Старый 06.09.2009, 19:23   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от natishka Посмотреть сообщение
мне не совсем понятна эта строчка
Код:
FROM .... where coalesce(naryd.idstatus,1)<> 2
видимо, coalesce - это функа, которая заменяет значение указанного поля на значение 2го параметра если 1й параметр is null

но имхо в таком случае уж лучше указывать какое-нить значение, которое точно не попадется в наборе данных, например, -1
т.е. получится так

Код:
FROM .... where coalesce(naryd.idstatus,-1)<> 2
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В зависимости от выбора в Select изменить значения другого Select Tayfun HTML и CSS 3 18.08.2011 00:05
связь один ко многим kate158 БД в Delphi 11 19.06.2009 09:13
Связь многие-ко-многим andirock2112 БД в Delphi 10 12.04.2009 22:05
Многие ко многим ("")(Э_Є)("") БД в Delphi 1 12.03.2009 01:18
Передача значения в <select></select> kkkggg Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 06.09.2007 00:26