Есть дата начала и дата окончания как узнать попала дата в этот период или нет? #656583


#0 by EvgeniuXP
Есть дата начала и дата окончания (одна таблица) как узнать попала дата (другая таблица) в этот период или нет через запрос?
#1 by NcSteel
запрос
#2 by EvgeniuXP
запросом как
#3 by EvgeniuXP
И второе: Дата начала 01.01.2010 05.08.2010 08.12.2012 и т.д. нужно получить таблицу: 01.01.2010   05.08.2012 05.08.2010   08.12.2012 08.12.2012   NULL (или текущая дата)
#4 by GROOVY
МЕЖДУ
#5 by EvgeniuXP
между знаю - но в между надо подзапрос засунуть
#6 by Рыжий Лис
ЛЕВОЕ СОЕДИНЕНИЕ
#7 by EvgeniuXP
и какое условие?
#8 by NcSteel
А < D and a>C
#9 by EvgeniuXP
левое соединение Период1 < Период2, далее группировка и получение минимального значения.
#10 by ilpar
Обычно такие задачки тестовыми делают... а ты на сайт )
#11 by ilpar
хотя прочитав пост 9 сливаюсь... Думать уже неохота было, не тудысь взел походу )
#12 by ilpar
Только не понял связь. Ответ на пост в посте другой вопрос?
#13 by Aprobator
между )
#14 by EvgeniuXP
это таблицу я получил первую (дата начала, дата окончания)... теперь из второй таблицы надо определить попадают ли ее даты в первую таблицу (, если да - то выбрать.
#15 by Aprobator
Соединение по ... между
#16 by Vertalex
Интересно, что второй столбец это поднятый на 1 позицию вверх - левый. А в левом - исходный столбец. Вопрос ко всем - можно ли запросом (v.8) добавлять к исходной таблице колонку с инкрементом (значения 1,2,3 и т.д.)?? Тогда можно было бы сделать левое соединение по условию разницы (=1) между инкрементными колонками...
#17 by Vertalex
ответы про соединение по МЕЖДУ: в исходном условии не говорилось произвести расстановку по условию, а дать ответ по каждой строке таблицы периодов и таблицы дат - входит дата или нет в период. Ведь так? Запросом это не просто сделать, мне кажется.
#18 by EvgeniuXP
можно, для этого выбираешь Ссылка < Ссылка2 и группируешь, получаешь 1, 2, 3 и т.д. именно так.
#19 by Aprobator
Причем тут расстановка то? Есть хотя бы одно соединение,  то есть и вхождение.
#20 by Vertalex
соединение работает по принципу "соединить (сопоставить, произвести расстановку) строки если выполнится условие". А это в задаче НЕ требуется. Нужно построчно (для каждой строки таблицы периодов и той-же (по порядку) строки таблицы проверяемых дат) сказать (в новом каком-то результирующем булевом столбце) - входит/не входит.
#21 by EvgeniuXP
ЛЕВОЕ СОЕДИНЕНИЕ _2_Периоды КАК _2_Периоды        ПО (_1_УникальныеДаты.Дата МЕЖДУ _2_Периоды.ДатаНачала И _2_Периоды.ДатаОкончания) УПОРЯДОЧИТЬ ПО всё
#22 by Vertalex
- ну это же вроде и есть расстановка (периоды сопоставятся по уникальным датам). Я думал условие задачи таки другое (описал в )
#23 by Aprobator
что и требовалось доказать. Отработку нулл еще тока добавить.
#24 by Vertalex
- не понял как это... Вообще, интересно придумать как делать инкрементную колонку таблицы, чтобы при этом размер запроса не зависел от количества строк в таблице....
#25 by Vertalex
- это было просто, теперь решите мой пример запросом :)
#26 by Aprobator
запрос чуток тока подрихтовать,немного модифицировать третье поле в выбрать и делов то.
#27 by Aprobator
Вернее запрос надо по менять чуток по другому, но суть та же, соединение ролляет.
#28 by ILM
Мужики, вы о чем пишите? Простое условие: ГДЕ ПРОВЕРЯЕМАЯДАТА >= Т.ДАТАНАЧАЛА И ПРОВЕРЯЕМАЯДАТА   <= Т.ДАТАОКОНЧАНИЯ
#29 by Aprobator
Бгг
#30 by Vertalex
повторю: при соединении происходит сопоставление по условию вхождения в период и строки с таблицы периодов "раскидываются" по своим строкам с уникальной датой. А нужно, чтобы они шли также как и были + должна добавиться колонка с признаком - входит или не входит. Кодом это 2 секунды. Запросом - хз как.
#31 by Vertalex
Наверное, самый правильный ответ задачи (моей)- "запросом никак" :)
#32 by ILM
Условие перепишите в поле, результат будет  булево, вставите в выбор  будет признак.
#33 by EvgeniuXP
левое соединение Т.Ссылка <= Т1.Ссылка, группируешь по ссылке сумма по количеству ссылка 1
#34 by EvgeniuXP
(+33) не сумма, просто количество (ссылка1)
#35 by ILM
Лучше 1  как поле и сумма(поле) как номер.
#36 by Vertalex
- это все хорошо когда все в одной таблице, но таблица периодов и таблица уникальных дат - это две разные. Нужно сначала сделать прямое построчное сопоставление. Как?
#37 by ILM
Таблица проверяемых дат и таблица периодов? Ха-ха,   ВЫБРАТЬ ТОДИН.ПРОВЕРЯЕМАЯДАТА, ТДВА.ПЕРИОДНАЧАЛА, ТДВА.ПЕРИОДОКОНЧАНИЯ, ИСТИНА КАК ПРИЗНАК ИЗ ТАБЛИЦАДАТ КАК ТОДИН, ТАБЛИЦАПЕРИОДОВ КАК ТДВА ГДЕ ТОДИН.ПРВЕРЯЕМАЯДАТА>= ТДВА.ДАТАНАЧАЛА И ТОДИН.ПРОВЕРЯЕМАЯДАТА  <= ТДВА.ДАТАОКОНЧАНИЯ
#38 by ILM
Что не так?
#39 by Vertalex
так вроде получилось (инкремент появился). Интересный прием... что-то мне подсказывает что он будет работать не только для дат. Для каких еще типов он применим? ВЫБРАТЬ
#40 by ILM
То что можно сравнить и то, что уникально в наборе данных.
#41 by ILM
Можно для любого праймари кея так делать. Группировка и сравнение могут быть и по группе полей, например чисел: номер передела. Номер затраты. Номер партии. И.т.д.
#42 by ILM
Если что, пишите на почту. Я спать у нас уже почти два часа ночи.
#43 by Vertalex
Зачем на почту, форум можно и завтра посетить :))
#44 by ILM
Занят сильно,проектов много)))
#45 by ILM
Можно еще и ускорить запрос раза в три, добавив два условия и связь между таблицами сделать. Какие отгадайте сами)))
#46 by Vertalex
- тут я так понял перемножены таблицы и оставлены только строки с условием попадания в периоды. Немного не то. Вот пример. таблица периодов строка 1: с первого по пятое марта строка 2: с первого по пятое апреля таблица дат строка 1: третье марта строка 2: шестое апреля Ожидаемый Результат строка 1: с первого по пятое марта / третье марта / Истина строка 2: с первого по пятое апреля / шестое апреля / Ложь
#47 by ILM
Выбрал истину, а потом если не входит в массив, то.... Ну вы сами уже знаете ответ
#48 by Mishell
А если так: Таблицы передаются в запрос в параметры (Таблица1, Таблица2) Таблица1 содержит периоды, колонки Дата1 и Дата2,Таблица2 даты для которых необходимо определить их вхождение, в результат попадут даты попавшие в интервалы, при желании можно выбрать и сами интервалы.      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица1 КАК Таблица1      ПО (Таблица2.Дата МЕЖДУ Таблица1.Дата1 И Таблица1.Дата2)
#49 by Barchuk
В рарус собеседование проходишь что ли?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С