|
|
|
| Есть дата заезда, есть дата выезда. Есть поле "кто"
Задача:
отобрать кто находился с ... по....
Отбирать по дате въезда не катит потому что кто то мог заехать на день раньше и находится в период отбора. | |
|
| |
|
|
|
| SELECT кто WHERE дата заезда <= с AND дата выезда >= по | |
|
| |
|
|
|
|
| И как ентот ,between сюда прикрутить? | |
|
| |
|
|
|
|
ps. Чегой-то мене глючит.
| |
|
| |
|
|
|
| Where
ДатаЗаезда Between С AND По
OR
ДатаВыезда Between С AND По
| |
|
| |
|
|
|
| не выйдет
пример были с 10 по 25
нужно выбрать кто был с 15 по 20 | |
|
| |
|
|
|
| я обычно, если касается датовых выборок, чтобы представить картинку более наглядно, рисую линию и ставлю точки и даты....
____A________Z________O_______P_________
A = ТочкаА(10е число )
Z = ДатаЗаезда(15)
O = ДатаВыезда(20)
P = ТочкаP (25е число)
получается что, чтобы охватить все ZO в пределах AP
надо чтобы WHERE Z between A and P or O between A and P
другими словами
>>Смотрите, например Иванов заехал 13, а уехал 17. Мы отбираем кто находился с 15 по 20. Иванова мы там не увидим.
если Вано заехал 13, а это не попадает в период с 15 по 20, но уехал то он -17, что попадает в период с 15 по 20е, то в таком случае Вано не отвертеться- был он в том отеле, как пить дать!
____Z________A________O_______P_________
A = ТочкаА(15е число )
Z = ДатаЗаезда(13)
O = ДатаВыезда(17)
P = ТочкаP (20е число)
| |
|
| |
|
|
|
| between не катит. Смотрите, например Иванов заехал 13, а уехал 17. Мы отбираем кто находился с 15 по 20. Иванова мы там не увидим. | |
|
| |
|
|
|
|
| а если один день был? | |
|
| |
|
|
|
|
| это понятно и так :) но Тень то этого не написал | |
|
| |
|
|
|
| СилЫч, ты не поверишь
я ведь хотел поставить равно, но затупил и забыл с какой стороны надо его ставить.
А потом подумал - зачем подробно разжевывать, так и зубки атрофируются | |
|
| |
|
|
|
| Итого апроксимируя получаем лозунги:
Помог с ответом на форуме - выбил зубы!
Задавание вопроса на форуме - начало пути к вставной челюсти!
| |
|
| |
|
|
|
| Допустим 16 заехали и выехали
16 < 20(True) And
16 > 15(True)
Если нужно найти всех кто весь этот период находился, то
дата заезда <= начало выборки AND
дата выезда >= окончание выборки
| |
|
| |
|
|
|
| ShadowOfSun, Вы сами себе противоречите.
Вы тоже рисовали числовую прямую и ставили точки на ней? Я нарисовал, поставил - всё сходится, только с Вашим первым ответом (а на счёт включать границы или нет, это пусть сам ТС решает, с такой-то мелочью справится) ;-) | |
|
| |
|
|
|
| Denis V.
Никакого противоречия нет:
первый вариант находит всех кто был в этом периоде(хотя бы день)
а второй вариант находит всех кто весь этот период находился (от звонка до звонка)
ГлазастыйМышь
+5 тонко подмечено, давно так не ржал | |
|
| |
|
|
|
| А-а-а...
("а-а-а смысл?.." - эти риторический вопрос, отвечать на него не надо) | |
|
| |
|
12 Кб. |
|
| Глянь. В VBA это тоже как-то можно отобразить, но мне лично проще так.
PS Если подходит, то поставь защиту от дурака на запрашиваемые даты
ДатаС>ДатаПо. | |
|
| |