Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите с отбором
 
 автор: silipin   (22.10.2009 в 15:35)   личное сообщение
 
 

Есть дата заезда, есть дата выезда. Есть поле "кто"
Задача:
отобрать кто находился с ... по....


Отбирать по дате въезда не катит потому что кто то мог заехать на день раньше и находится в период отбора.

  Ответить  
 
 автор: Мюллер   (22.10.2009 в 16:20)   личное сообщение
 
 

SELECT кто WHERE дата заезда <= с AND дата выезда >= по

  Ответить  
 
 автор: Силblч   (22.10.2009 в 16:29)   личное сообщение
 
 

between?

  Ответить  
 
 автор: Мюллер   (22.10.2009 в 17:43)   личное сообщение
 
 

И как ентот ,between сюда прикрутить?

  Ответить  
 
 автор: Lukas   (22.10.2009 в 17:58)   личное сообщение
 
 


ps. Чегой-то мене глючит.

  Ответить  
 
 автор: Lukas   (22.10.2009 в 18:00)   личное сообщение
 
 

Where
ДатаЗаезда Between С AND По
OR
ДатаВыезда Between С AND По

  Ответить  
 
 автор: ГлазастыйМышь   (23.10.2009 в 09:30)   личное сообщение
 
 

не выйдет
пример были с 10 по 25
нужно выбрать кто был с 15 по 20

  Ответить  
 
 автор: Силblч   (23.10.2009 в 10:22)   личное сообщение
 
 

я обычно, если касается датовых выборок, чтобы представить картинку более наглядно, рисую линию и ставлю точки и даты....

____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е число)


  Ответить  
 
 автор: silipin   (22.10.2009 в 17:59)   личное сообщение
 
 

between не катит. Смотрите, например Иванов заехал 13, а уехал 17. Мы отбираем кто находился с 15 по 20. Иванова мы там не увидим.

  Ответить  
 
 автор: ShadowOfSun   (22.10.2009 в 19:28)   личное сообщение
 
 

[Дата заезда] < [окончательной даты] AND
[дата выезда] > [начальной даты]


То есть по окончательной дате проверяешь, успели ли заехать постояльцы
А по начальной дате проверяешь не успели ли выехать
при совпадении условий результат соответствует твоей выборке

P. S. Lukas' у привет, с возвращением

  Ответить  
 
 автор: Силblч   (23.10.2009 в 10:23)   личное сообщение
 
 

а если один день был?

  Ответить  
 
 автор: kot_k_k   (23.10.2009 в 10:27)   личное сообщение
 
 

>=, <=

  Ответить  
 
 автор: Силblч   (23.10.2009 в 10:44)   личное сообщение
 
 

это понятно и так :) но Тень то этого не написал

  Ответить  
 
 автор: ShadowOfSun   (23.10.2009 в 11:01)   личное сообщение
 
 

СилЫч, ты не поверишь
я ведь хотел поставить равно, но затупил и забыл с какой стороны надо его ставить.
А потом подумал - зачем подробно разжевывать, так и зубки атрофируются

  Ответить  
 
 автор: ГлазастыйМышь   (23.10.2009 в 11:57)   личное сообщение
 
 

Итого апроксимируя получаем лозунги:
Помог с ответом на форуме - выбил зубы!
Задавание вопроса на форуме - начало пути к вставной челюсти!

  Ответить  
 
 автор: ShadowOfSun   (23.10.2009 в 10:37)   личное сообщение
 
 

Допустим 16 заехали и выехали

16 < 20(True) And
16 > 15(True)

Если нужно найти всех кто весь этот период находился, то
дата заезда <= начало выборки AND
дата выезда >= окончание выборки

  Ответить  
 
 автор: Denis V.   (23.10.2009 в 12:47)   личное сообщение
 
 

ShadowOfSun, Вы сами себе противоречите.
Вы тоже рисовали числовую прямую и ставили точки на ней? Я нарисовал, поставил - всё сходится, только с Вашим первым ответом (а на счёт включать границы или нет, это пусть сам ТС решает, с такой-то мелочью справится) ;-)

  Ответить  
 
 автор: ShadowOfSun   (23.10.2009 в 12:53)   личное сообщение
 
 

Denis V.

Никакого противоречия нет:
первый вариант находит всех кто был в этом периоде(хотя бы день)
а второй вариант находит всех кто весь этот период находился (от звонка до звонка)

ГлазастыйМышь
+5 тонко подмечено, давно так не ржал

  Ответить  
 
 автор: Denis V.   (23.10.2009 в 13:25)   личное сообщение
 
 

А-а-а...
("а-а-а смысл?.." - эти риторический вопрос, отвечать на него не надо)

  Ответить  
 
 автор: Гоблин   (23.10.2009 в 22:22)   личное сообщение
12 Кб.
 
 

Глянь. В VBA это тоже как-то можно отобразить, но мне лично проще так.

PS Если подходит, то поставь защиту от дурака на запрашиваемые даты
ДатаС>ДатаПо.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList