powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / помогите обьеденить три запроса в один
9 сообщений из 9, страница 1 из 1
помогите обьеденить три запроса в один
    #39496378
Юрий_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
необходимо вычислить фирмы (ИНН) которые совершают закупки в нерабочее время и ни когда не совершают в рабочее время в один запрос
у меня получается только в три

1 запрос создает таблицу фирм (ИНН) которые совершали закупки в нерабочее время после 17:00:00:

SELECT Лист5.Дата, Лист5.время, Лист5.ИНН INTO [нерабоч время]
FROM Лист5
WHERE (((Лист5.время)>#12/30/1899 17:0:0#));

2 запрос создает таблицу фирм (ИНН) которые совершали закупки в рабочее время не позднее 17:00:00:

SELECT Лист5.Дата, Лист5.время, Лист5.ИНН INTO [рабоч время]
FROM Лист5
WHERE (((Лист5.время)<=#12/30/1899 17:0:0#));

3 запрос показывает какие фирмы (ИНН) совершают закупки автор в нерабочее время и ни когда не совершали в рабочее время:

SELECT [нерабоч время].ИНН, Count([нерабоч время].Дата) AS [Count-Дата]
FROM [нерабоч время] LEFT JOIN [рабоч время] ON [нерабоч время].ИНН = [рабоч время].ИНН
WHERE ((([рабоч время].ИНН) Is Null))
GROUP BY [нерабоч время].ИНН;
...
Рейтинг: 0 / 0
помогите обьеденить три запроса в один
    #39496381
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
SELECT DISTINCT ИНН
FROM Лист5
WHERE Hour(время)>17 AND 
      DLookUp("ИНН","Лист5","ИНН=" & ИНН & " AND Hour(время)<=17") Is Null;
...
Рейтинг: 0 / 0
помогите обьеденить три запроса в один
    #39496526
Юрий_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,
Спасибо огромное, все получилось
...
Рейтинг: 0 / 0
помогите обьеденить три запроса в один
    #39496544
Юрий_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

Засада!!!
При запросах я не учел выходные дни, где все время считается не рабочим,
Возможно ли учесть выходные дни в этом запросе?

SELECT DISTINCT ИНН
FROM Лист5
WHERE Hour(время)>17 AND
DLookUp("ИНН","Лист5","ИНН=" & ИНН & " AND Hour(время)<=17") Is Null;
...
Рейтинг: 0 / 0
помогите обьеденить три запроса в один
    #39496560
Юрий_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

Вроде получилось
вот так


SELECT DISTINCT Лист5.ИНН, Count(Лист5.Дата) AS [Count-Дата]
FROM Лист5
WHERE (((Weekday([Дата]))<>7 Or (Weekday([Дата]))=1 Or ((Weekday([Дата]))=7 Or (Weekday([Дата]))=1)))
GROUP BY Лист5.ИНН, Hour([время]), DLookUp("ИНН","Лист5","ИНН=" & [ИНН] & " AND Hour(время)<=17")
HAVING (((Hour([время]))>17) AND ((DLookUp("ИНН","Лист5","ИНН=" & [ИНН] & " AND Hour(время)<=17")) Is Null)) OR (((DLookUp("ИНН","Лист5","ИНН=" & [ИНН] & " AND Hour(время)<=17")) Is Null));
...
Рейтинг: 0 / 0
помогите обьеденить три запроса в один
    #39496589
Юрий_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,
нет не получается
нужна помощь
как это сделать?
...
Рейтинг: 0 / 0
помогите обьеденить три запроса в один
    #39496612
Юрий_74, ну вы и нагородили, коллега!
Код: plsql
1.
WHERE (((Weekday([Дата]))<>7 Or (Weekday([Дата]))=1 Or ((Weekday([Дата]))=7 Or (Weekday([Дата]))=1)))

В вольном изложении это условие звучит так: НЕ суббота или суббота или воскресенье или еще раз воскресенье. Что вы хотите отобрать? Кстати, у Weekday есть 2-й аргумент - начало недели. Если указать 2 (vbMonday), то выходные будут 6 и 7.
Код: sql
1.
GROUP BY Лист5.ИНН, Hour([время]), DLookUp("ИНН","Лист5","ИНН=" & [ИНН] & " AND Hour(время)<=17")

Уж не знаю, зачем группировать по часу, но нафига по DLookUp?
HAVING у вас тоже отбирает тех, кто закупал только после 17 и тех, кто мог вообще ничего не закупать.
Кстати, условие "все, кто закупал только после 17 или в выходные" вернет вам все фирмы, кто закупал хоть 1 раз в выходные, в т.ч. и тех, кто и в будни до 17.

Попробуйте так:
Код: sql
1.
2.
3.
4.
SELECT Лист5.ИНН, Count(*) AS [Count-Дата]
FROM Лист5
GROUP BY Лист5.ИНН
HAVING MIN(IIF(Weekday([Дата], 2) < 6, [время], #17:01#)) > #17:00#

Надеюсь, у вас в поле [время] указано только время, иначе нужно так:
HAVING HOUR(MIN(IIF(Weekday([Дата], 2) < 6, [время], #17:01#))) > 17
...
Рейтинг: 0 / 0
помогите обьеденить три запроса в один
    #39496637
Юрий_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

класс!!!
все получилось
Спасибо!!!
...
Рейтинг: 0 / 0
помогите обьеденить три запроса в один
    #39496652
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий_74,

Посмотрите это (пишу по памяти с планшета, могут быть неточности):
Код: sql
1.
2.
3.
4.
SELECT DISTINCT ИНН 
FROM Лист5 
WHERE (Hour(время)>17 OR Weekday(Дата,2)>5) AND 
      DLookUp("ИНН","Лист5","ИНН=" & ИНН & " AND (Hour(время)<=17 AND  Weekday(Дата,2)<6)") Is Null;


Но еще ведь есть праздники. О них подумайте.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / помогите обьеденить три запроса в один
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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