powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отбор значения по интервалу другой таблицы
11 сообщений из 11, страница 1 из 1
Отбор значения по интервалу другой таблицы
    #32297729
C'est
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 3 таблицы: Персонал (ключ-человекID), Визиты и Регистрация (в обеих внешний ключ - человекID).
В Регистрации поля: номер, дата_начала, дата_окончания
В Визитах поля: приезд, отъезд
Нужно отобрать значения "приезд", которые находятся вне промежутка от дата_начала до дата_окончания
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297731
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где отобрать? В запросе, в программе, или где?
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297739
C'est
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В запросе
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297763
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос. Предположим ситуацию.

Таблица Персонал:
ЧеловекID/ФИО
1/"Иванов И.И."

Таблица Визиты:
человекID/Приезд/Отъезд
1/01-01-2003/31-01-2003
1/01-02-2003/28-02-2003

Таблица Регистрация:
человекID/дата_начала/дата_окончания
1/01-01-2003/31-01-2003
1/01-02-2003/28-02-2003

По твоей постановке обе записи таблицы "Визиты" подпадают под условие.
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297785
C'est
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК, будем считать, что такой ситуации не будет, потому что:
сотрудник приехал из Великобритании 01/01/2003 (поле "Приезд" таблицы визиты). Его нужно зарегистрировать в ОВИР (таблица "Регистрация") на сколько они разрешат - к примеру, на год.
Если он в течение этого года выезжает из страны, например в отпуск - его регистрация еще действует и пока не закончится, повторно его регистрировать не надо. То есть, реально это будет выглядеть так:

ЧеловекID/ФИО
1/"Иванов И.И."

Таблица Визиты:
человекID/Приезд/Отъезд
1/01-01-2003/31-01-2003
1/01-02-2003/28-02-2003
1/01-02-2004/28-02-2004

Таблица Регистрация:
человекID/дата_начала/дата_окончания
1/03-01-2003/31-12-2003
1/03-02-2004/31-12-2004

То есть, мне нужно отобрать те приезды, которые вне интервала регистрации (как строки 1 и 3 в Визитах).
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297789
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так:

Делаем Запрос1
SELECT Регистрация.человекID, Визиты.приезд
FROM Регистрация INNER JOIN Визиты ON Регистрация.человекID = Визиты.человекID
WHERE (((Визиты.приезд) Between [дата_начала] And [дата_окончания]));

Делаем Запрос2
SELECT Визиты.человекID, Визиты.приезд
FROM Визиты LEFT JOIN Запрос1 ON (Визиты.приезд = Запрос1.приезд) AND (Визиты.человекID = Запрос1.человекID)
WHERE (((Запрос1.приезд) Is Null));
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297790
C'est
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oops,
пока написал, сообразил, как сделать... И запрос совем простенький (два условия отбора - "Отъезд" is null or "Приезд">Окончания_регирстрации).
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297809
C'est
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попробую так тоже
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297834
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
SELECT Регистрация.человекID, Визиты.приезд 
FROM Регистрация INNER JOIN Визиты ON 
(Регистрация.человекID = Визиты.человекID ) 
and (Визиты.приезд <Регистрация.дата_начала or Визиты.приезд > Регистрация.Дата_окончания)
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297836
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2(c)VIG
Такой запрос вернет обе записи таблицы "Приезд" из примера в сообщении [382916].
А, если я правильно понял автора, ему надо получить даты приездов, которые не попадают ни в один период регистрации.
...
Рейтинг: 0 / 0
Отбор значения по интервалу другой таблицы
    #32297843
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo
Ты прав!

Код: plaintext
1.
2.
3.
4.
SELECT Визиты.человекID , Визиты.приезд 
FROM Визиты Left  JOIN  Регистрация ON 
( Визиты.человекID =Регистрация.человекID ) 
and (Визиты.приезд between Регистрация.дата_начала and Дата_окончания)
where Регистрация.человекID  is null

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


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