|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.03.2019, 13:09 | #1 |
Регистрация: 22.03.2019
Сообщений: 8
|
Посчитать поля с пересекающимися отрезками
Добрый день!
Подскажите, пожалуйста по созданию запроса: Имеются три поля. Первое - имя клиента. Второе - дата и время его прихода в формате 29.03.2019 12:00:00 (полный формат даты). Третье - время обработки данного клиента (в часах) в формате 14:00 Таким образом, имеем отрезок времени для этого клиента от 29.03.2019 12:00:00 до 30.03.2019 14:00. И так по всем клиентам, которых может быть больше или меньше, но порядка нескольких тысяч. Нужно выявить клиентов, которые встретятся на обработке. То есть, их отрезки пересекутся. Возился с Count, но условие between с расчетами из разных полей записи не принимает. Where вообще работает с одной строкой. Iif вложить в Count тоже не получилось. Наверное, опыта маловато. |
22.03.2019, 13:57 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 22.03.2019 в 14:00. |
22.03.2019, 14:05 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
там нужно написать через "ИЛИ" три варианта из 4-х имеющихся (трёх достаточно, ибо 4-й попадает в один из 3-х)
вот такие варианты могут быть: TimeIntersect.png |
22.03.2019, 14:38 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
есть 2 отрезка: A1<A2 и B1<B2
они пересекаются если: B1<A2 and B2>A1 это учтет все варианты
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
22.03.2019, 14:56 | #5 |
Регистрация: 22.03.2019
Сообщений: 8
|
Через два условия > и < тоже пытался. Не срабатывает. Может быть, потому, что сравнение идет не с конкретной датой/временем, а с вычисляемой величиной, например, "Дата/время прихода + время обработки". А может быть, из-за того, что нужно каждую запись рассчитывать с учетом отрезков ВСЕХ полей в сопоставлении со своим?
|
22.03.2019, 15:00 | #6 | |
Регистрация: 22.03.2019
Сообщений: 8
|
Цитата:
|
|
22.03.2019, 15:01 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Сначала правильно из даты-времени начала и времени конца получи правильно дату-время конца. Остальное потом )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
22.03.2019, 15:12 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
22.03.2019, 15:32 | #9 |
Регистрация: 22.03.2019
Сообщений: 8
|
Если покороче записать, то нужно для каждого поля (назовем ti) проверить условие:
ti>tj-t'i & ti<tj+t'j для всех j. И найти количество удовлетворяющих условия случаев, перебрав все tj. Здесь t' - время обработки, соответственно, проверяемого поля i или сопоставляемого с ним поля j. По очереди нужно проверить все поля ti записи. tj - текущее сопоставляемое поле. Если так будет проще, то можно сделать отдельные записи для ti и для tj. |
22.03.2019, 15:35 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
и начните с |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выделение области на изображении непрерывными отрезками | Marsel737 | Общие вопросы Delphi | 5 | 21.04.2010 23:46 |
как получить значение поля грид на основе значения другого lookUp поля | malayka | БД в Delphi | 0 | 21.04.2010 19:06 |
Выявление одинаковости значений поля в одной талице по значению поля в другой | nikmay | SQL, базы данных | 4 | 13.08.2009 12:51 |
Найти координаты хотя бы одной точки, попадающей в область, образованную тремя пересекающимися линиями. | Zibiv | Помощь студентам | 1 | 03.10.2008 17:55 |