|
Сравнение на больше-меньше в условии связи СКД |
☑ |
0
Sh18
06.05.20
✎
09:53
|
Я так понял, что СКД делать этого не умеет, но есть небольшая надежда, что я чего-то недоглядел
Задача:
Запросом (в СКД) получаются какие-то данные, привязанные к дате: {Данные, Дата}
Есть таблица, в которой пользователем задаются произвольные периоды: {ДатаОт, ДатаДо, Представление}. Эта таблица передается в СКД как внешний набор данных.
Далее их надо объединить и получить только те данные первого запроса, которые попадают в периоды второй таблицы.
Попытка сделать два условия связи ДатаОт <= Дата и ДатаДо >= Дата не срабатывает. Происходит полное соединение (тоже странно), к полному набору данных запроса приписывается Представление1 (первый интервал) и плюс такой же полный набор с Представление2 от второго интервала, то есть, отбор не работает, в отчет выводятся одинаковые (и полные) данные для периода1 и периода2.
Фича? и согласиться на полную внешнюю подготовку данных с последующей загрузкой в СКД?
|
|
1
Василий Алибабаевич
06.05.20
✎
10:00
|
(0) Лично я ННП. Но предположу следующее :
1. Нужно делать не "два условия связи ДатаОт <= Дата и ДатаДо >= Дата", а одно. Типа :
Дата Между ДатаОт и ДатаДо
|
|
2
mistеr
06.05.20
✎
10:03
|
(0) Да, к сожалению не умеет. Сам не раз напарывался. Серьезная недоработка.
Поле "Условие связи" (если ты про него), используется только для описания собственной иерархии в наборе данных.
|
|
3
Sh18
06.05.20
✎
10:03
|
(1) Там такое невозможно. Это вторая закладка в СКД - Связи наборов данных, это не связь в запросе
|
|
4
Sh18
06.05.20
✎
10:04
|
(2) Alas, как говорят французы ((
Ладно, будем по-тупому
|
|
5
Василий Алибабаевич
06.05.20
✎
10:05
|
(3) Ну тогда по теории БД нужно вычислить суррогатный ключ типа номер периода. Для обоих наборов. И соединять уже по этому полю.
|
|
6
mistеr
06.05.20
✎
10:13
|
(5) Если бы так просто.. Поскольку периоды произвольные, то каждая строка из первого набора может попадать в несколько периодов. То есть связь многие-ко-многим. Условием только на равенство такую связь описать невозможно.
|
|
7
Sh18
06.05.20
✎
10:28
|
(6) Периоды не пересекаются, но это не поможет. Произвольную таблицу нельзя передать в запрос (чтобы что-то там вычислить). Было бы можно - вопрос бы не стоял
|
|