powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Дописать запрос
3 сообщений из 3, страница 1 из 1
Дописать запрос
    #34461817
Tayo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть таблицы
EMP (ID, NAME, DOLZHNOST, START_WORK, NOTES)
EMP_VOCATION (ID, ID_EMP, START_VOC, END_VOC)

Вывести в таблицу всех сотрудников, которые могут пойти в отпуск, т.е. проработали 6 мес. И больше.



SELECT EMP.NAME, EMP.DOLZHNOST, EMP.START_WORK, EMP_VOCATION.START_VOC
FROM EMP LEFT JOIN EMP_VOCATION ON EMP.ID = EMP_VOCATION.ID_EMP
WHERE (((DateAdd("m",6,[EMP]![START_WORK]))<Date()))
ORDER BY EMP.NAME

написал так, но еще остается добавить условие DateAdd(m,6,Max(END_VOC))<Date()
...
Рейтинг: 0 / 0
Дописать запрос
    #34461953
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tayo
Насколько я поняла, есть две категории сотрудников:
– те, кто еще ни разу не были в отпуске и среди них нужно выбрать тех, кто проработал с момента устройства больше 6 мес.
– те, кто уже был в отпуске, и возможно не раз, и среди них нужно выбрать тех, у кого дата возвращения из последнего отпуска отстоит от текущей более чем на 6 мес.
Опять же, насколько я поняла, в Вашем случае Access ругается на попытку “... использования статистической функции в предложении WHERE”
Я вынесла функцию Max в подчиненный запрос Query_MAX_END_VOC.
Правда я не поняла, зачем Вы включили в запрос поле EMP_VOCATION.START_VOC. Логичней на мой взгляд было бы включить поле EMP_VOCATION.END_VOC. В моем варианте в запрос включено поле END_VOC – дата окончания последнего отпуска.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT
    EMP.NAME,
    EMP.DOLZHNOST,
    EMP.START_WORK,
    Query_MAX_END_VOC.END_VOC
FROM EMP
LEFT JOIN
    [SELECT
         EMP_VOCATION.ID_EMP,
         Max(EMP_VOCATION.END_VOC) AS END_VOC
     FROM EMP_VOCATION
     GROUP BY EMP_VOCATION.ID_EMP]. AS Query_MAX_END_VOC
ON EMP.ID = Query_MAX_END_VOC.ID_EMP
WHERE DateAdd("m", 6 ,IIf([Query_MAX_END_VOC]![END_VOC] Is Null,[EMP]![START_WORK],[Query_MAX_END_VOC]![END_VOC]))<Date()
ORDER BY EMP.NAME;
Может кто-то предложит и более простой вариант.
...
Рейтинг: 0 / 0
Дописать запрос
    #34462076
Tayo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь )
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Дописать запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]