Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос на сравнение значений  [new]
dead end
Member

Откуда:
Сообщений: 29
Добрый вечер.Нужна помощь с запросом. Есть две таблицы: ШтатноеРасписание(КодОтдела,КодДолжности,КоличествоШтатныхЕдиниц)
и таблица
Сотрудники(НомерПриказа, Табельный номер,КодОтдела,КодДолжности)
Нужно написать запрос,в котором должно сравниваться КоличествоШтатныхЕдиниц с количеством записей уже имеющихся сотрудников на данной должности в данном отделе.
Таблицы связаны по составному ключу(КодОтдела, Код Должности).
Количество записей вычисляю:

SELECT COUNT(Сотрудники.КодДолжности) FROM Сотрудники
GROUP BY КодОтдела, КодДолжности

Каким образом сравнить полученный результат со значениями из первой таблицы? Прошу помощи(
26 мар 18, 21:34    [21287791]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на сравнение значений  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5112
- версия сервера?
- что значит "сравнить"?
26 мар 18, 21:55    [21287816]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на сравнение значений  [new]
dead end
Member

Откуда:
Сообщений: 29
2012
в общем, допустим, в результате подсчета количества записей у меня получается столбец со значениями,которые нужно сравнить со значениеми из поля КоличествоЕдиниц для данного отдела и должности, меньше он или равен .
26 мар 18, 22:44    [21287945]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на сравнение значений  [new]
dead end
Member

Откуда:
Сообщений: 29
Дедушка,

если просто объяснить цель данного запроса мне нужно сделать так, чтобы пользователь не мог добавить больше сотрудников на должность,чем предусмотрено в столбце КоличествоЕдиниц.
26 мар 18, 22:48    [21287959]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на сравнение значений  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
dead end
Дедушка,

если просто объяснить цель данного запроса мне нужно сделать так, чтобы пользователь не мог добавить больше сотрудников на должность,чем предусмотрено в столбце КоличествоЕдиниц.

То есть триггер, который не давал бы записать сотрудника по сочетанию КодОтдела и КодДолжности так, что если бы суммировать всех прочих сотрудников с такой должностью из такого отдела - то их число уже бы совпало с количеством штатных единиц.
Отлично.

А теперь 2 вопроса.
1. Сотрудники(НомерПриказа, Табельный номер,КодОтдела,КодДолжности) - сотрудник увольняется, его код отдела обнуляется?
2. В таблицу ШтатноеРасписание еще не внесли по новому отделу или новой должности в существующем отделе ограничивающее количество штатных единиц. Это означает, что ограничение еще не действует и можно записать сколько угодно сотрудников? Или что штатное еще не утверждено и нельзя записать НИ одного сотрудника на такое сочетание?
26 мар 18, 23:36    [21288120]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на сравнение значений  [new]
dead end
Member

Откуда:
Сообщений: 29
Andy_OLAP,

Да,обнуляется.
Там при заполнении таблицы нельзя оставить поле пустым,так что ограничение будет всегда)
27 мар 18, 00:42    [21288220]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на сравнение значений  [new]
dead end
Member

Откуда:
Сообщений: 29
Andy_OLAP,

Триггер это слишком сложно для меня,хотелось бы понимать,что делаешь(
Мне хотя бы составить запрос на выборку свободных должностей.
27 мар 18, 00:47    [21288225]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на сравнение значений  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
dead end
Andy_OLAP,

Триггер это слишком сложно для меня,хотелось бы понимать,что делаешь(
Мне хотя бы составить запрос на выборку свободных должностей.

Юный коллега, есть много учебников по SQL.

Видите ли, в чем дело. Вот Вы идете на форум хирургов, а там вопрос "мне бы скальпель острый подобрать, какого производителя рекомендуете, я студент-медик, завтра в первый раз буду сердце вскрывать и шунтировать, сразу один, никого из других хирургов рядом нет, хотелось бы не промахнуться с выбором инструмента, чтобы лезвие не затупилось".

И Вы в ужасе думаете - а не моего ли знакомого он будет оперировать?

Я к тому, что когда Вы получаете готовое решение на форуме вместо самостоятельного штудирования учебных материалов - это плохо заканчивается. Степень некомпетентности нарастает и бумерангом прилетит к Вам лично.

Другое дело, когда в 100-й раз решаете сложный пример из учебника, но что-то не получается - и тут подскажут, где опечатку сделали, например, по невнимательности от усталости, например.
27 мар 18, 12:52    [21289578]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на сравнение значений  [new]
dead end
Member

Откуда:
Сообщений: 29
Andy_OLAP,

если студенту никто не поможет, он самостоятельно убьет больше людей ,чем мог)

я тут понятными мне методами попробовал и все равно ошибка,как её исправить?

К сообщению приложен файл. Размер - 15Kb
27 мар 18, 16:22    [21290571]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на сравнение значений  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
dead end,

Варианта два:

1. Для вложенного запроса замени
Group by КодОтдела, КодДолжности
на
Where КодОтдела /*вложенного запроса*/ = КодОтдела /*Штатное расписание*/
and КодДолжности /*вложенного запроса*/ = КодДолжности /*Штатное расписание*/
и убери inner join
/*тогда у тебя для каждой строки Штатного расписания будет считать количество из принятых*/

2. Добавь во вложенный запрос КодОтдела и КодДолжности и помести этот запрос в Inner Join вместо ПриемаНаРаботу
/*Тогда ты из таблицы приема на работу соберешь количество принятых в разрезе должностей и отделов, уже этот результат джойнить со штатным расписанием*/
27 мар 18, 16:36    [21290632]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить