|
v8 Выборка документов запросом с заданием периода из временной таблицы | ☑ | ||
---|---|---|---|---|
0
KARSH
30.01.14
✎
15:52
|
Добрый день.
Проблема в следующем: есть запрос в котором выбираются действующие бонусы, они помещаются во временную таблицу, дальше необходимо определить какие заказы были попали в период действия бонусов: ВЫБРАТЬ Бонус.Ссылка КАК Бонус, Бонус.Ссылка.ПериодНачало КАК ПериодНачало, Бонус.Ссылка.ПериодОкончание КАК ПериодОкончание, ПОМЕСТИТЬ ТаблицаБонусов ИЗ Документ.Бонусы КАК Бонус ; ВЫБРАТЬ ЗаявкаПокупателя.Ссылка КАК ЗаявкаПокупателя ИЗ Документ.ЗаявкаПокупателя КАК ЗаявкаПокупателя ГДЕ ЗаявкаПокупателя.Дата МЕЖДУ &Дата1 И &Дата2 В качестве Дата1 и Дата2 нужно брать минимальное и максимальное значение дат по ТаблицеБонусов. Кто нибудь сталкивался с таким? Нужно сделать в одном запросе. |
|||
1
zak555
30.01.14
✎
15:54
|
соединить ?
|
|||
2
Maxus43
30.01.14
✎
15:55
|
ВЫБРАТЬ
МИНИМУМ(Бонус.Ссылка.ПериодНачало) КАК ПериодНачало, МАКСИМУМ(Бонус.Ссылка.ПериодОкончание) КАК ПериодОкончание, ПОМЕСТИТЬ ТаблицаБонусов ИЗ Документ.Бонусы КАК Бонус ; ВЫБРАТЬ ЗаявкаПокупателя.Ссылка КАК ЗаявкаПокупателя ИЗ Документ.ЗаявкаПокупателя КАК ЗаявкаПокупателя //+ Соедниение с таблицей Бонусов |
|||
3
KARSH
30.01.14
✎
15:58
|
(1)что с чем? количество бонусов может быть много, к примеру:
01.01.14 - 20.01.14 05.01.14 - 18.01.14 02.01.14 - 28.01.14 нужно выбрать заявки с 01.01.14 по 28.01.14 (2) а конкретней соединение слева не подойдет, т.к. бонусы могут пересекаться |
|||
4
KARSH
30.01.14
✎
16:00
|
+(3) к тому же если заявок 20000, то запрос будет очень долго работать, т.к. при первой выборке будут выбираться все заявки, потом объединение, а только потом будет отрабатывать ограничение
|
|||
5
Enders
30.01.14
✎
16:02
|
ЗаявкаПокупателя.Дата МЕЖДУ (ВЫБРАТЬ Минимум(ТаблицаБонусов.ПериодНачало) из ТаблицаБонусов) И (ВЫбрать Максимум(ТаблицаБонусов.ПериодОкончание) из ТаблицаБонусов) Может так?)
|
|||
6
KARSH
30.01.14
✎
16:04
|
(5) так ругается на ВЫБРАТЬ послем МЕЖДУ :(
|
|||
7
Maxus43
30.01.14
✎
16:11
|
(3) >>нужно выбрать заявки с 01.01.14 по 28.01.14
ну дак это и будет в (2). В вт обрати внисание что только даты. Соединяй вт с документами слева |
|||
8
KARSH
30.01.14
✎
16:18
|
(7) понял что хотели сказать, вообщем как то вот так
ВЫБРАТЬ МИНИМУМ(Бонус.Ссылка.ПериодНачало) КАК ПериодНачало, МАКСИМУМ(Бонус.Ссылка.ПериодОкончание) КАК ПериодОкончание, ПОМЕСТИТЬ ТаблицаБонусов ИЗ Документ.Бонусы КАК Бонус ; ВЫБРАТЬ ЗаявкаПокупателя.Ссылка ИЗ ТаблицаБонусов ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаПокупателя КАК ЗаявкаПокупателя ПО ТаблицаБонусов.ПериодНачало<= ЗаявкаПокупателя.Ссылка.Дата И ТаблицаБонусов.ПериодОкончания>= ЗаявкаПокупателя.Ссылка.Дата СГРУППИРОВАТЬ ПО ЗаявкаПокупателя.Ссылка |
|||
9
KARSH
30.01.14
✎
16:18
|
Maxus43 - спасибо
|
|||
10
Maxus43
30.01.14
✎
16:22
|
И левое сойдёт, что будет быстрей тут хз, надо замерять
|
|||
11
KARSH
30.01.14
✎
16:24
|
(10) вроде работает нормально, будут жаловаться тогда и буду думать. Спасибо
|
|||
12
Jaap Vduul
30.01.14
✎
16:24
|
Бонус.Ссылка.ПериодНачало
ЗаявкаПокупателя.Ссылка.Дата .Ссылка - лишнее |
|||
13
zak555
30.01.14
✎
16:24
|
если бонус будет
26.01-31.01 -- этим запросом попадёт |
|||
14
zak555
30.01.14
✎
16:28
|
ту надо в тз запихнуть за период, а уж потом тз соединять с бонусом
|
|||
15
zak555
30.01.14
✎
16:30
|
*в тз запихнуть заявки за период
|
|||
16
KARSH
30.01.14
✎
16:31
|
(13) почему попадет? там стоит И не ИЛИ, жесткое ограничение
на границы совпадения периодов |
|||
17
zak555
30.01.14
✎
16:36
|
(16) что в тз у тебя первый запрос попадает ?
|
|||
18
KARSH
30.01.14
✎
16:41
|
понял, там надо ограничение поставить на выборку за определенные даты
|
|||
19
KARSH
30.01.14
✎
16:41
|
(17) спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |