|
|
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Есть 3 таблицы: Персонал (ключ-человекID), Визиты и Регистрация (в обеих внешний ключ - человекID). В Регистрации поля: номер, дата_начала, дата_окончания В Визитах поля: приезд, отъезд Нужно отобрать значения "приезд", которые находятся вне промежутка от дата_начала до дата_окончания ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 15:40 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Где отобрать? В запросе, в программе, или где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 15:50 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
В запросе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 16:11 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Еще вопрос. Предположим ситуацию. Таблица Персонал: Человек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 По твоей постановке обе записи таблицы "Визиты" подпадают под условие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 17:52 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
ОК, будем считать, что такой ситуации не будет, потому что: сотрудник приехал из Великобритании 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 в Визитах). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 19:24 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Например так: Делаем Запрос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)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 19:51 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Oops, пока написал, сообразил, как сделать... И запрос совем простенький (два условия отбора - "Отъезд" is null or "Приезд">Окончания_регирстрации). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 19:51 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Спасибо, попробую так тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2003, 21:28 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2003, 00:29 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
2(c)VIG Такой запрос вернет обе записи таблицы "Приезд" из примера в сообщении [382916]. А, если я правильно понял автора, ему надо получить даты приездов, которые не попадают ни в один период регистрации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2003, 00:38 |
|
||
|
Отбор значения по интервалу другой таблицы
|
|||
|---|---|---|---|
|
#18+
2 Geo Ты прав! Код: plaintext 1. 2. 3. 4. не проверял ,но где-то так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2003, 01:13 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32297836&tid=1678787]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 356ms |

| 0 / 0 |
