|
Нужно по каждому заказчику отобрать три последних заказа по дате. 🠗 (Волшебник 27.06.2017 17:39) | ☑ | ||
---|---|---|---|---|
0
Ivan_495
27.06.17
✎
15:58
|
Есть документы заказ с датами, в них есть заказчики. Нужно по каждому заказчику отобрать три последних заказа по дате.
|
|||
1
Волшебник
модератор
27.06.17
✎
15:59
|
Тебе нужно, ты и делай.
Не ставьте "общих" вопросов. Если Вы даже не знаете, как подступиться к задаче, все равно скажите, какие у Вас есть идеи. |
|||
2
Ivan_495
27.06.17
✎
15:59
|
есть запрос
ВЫБРАТЬ ПЕРВЫЕ 10 ЗаказТураУчастники.Участник, трипосл.Дата, трипосл.Ссылка ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗаказТураУчастники.Ссылка.Дата КАК Дата, ЗаказТураУчастники.Ссылка.Ссылка КАК Ссылка, ЗаказТураУчастники.Участник КАК Участник ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники ГДЕ ЗаказТураУчастники.Ссылка.Проведен = ИСТИНА И ЗаказТураУчастники.Ссылка.Аннулирован = ЛОЖЬ И ЗаказТураУчастники.Ссылка.ПометкаУдаления = ЛОЖЬ СГРУППИРОВАТЬ ПО ЗаказТураУчастники.Ссылка.Ссылка, ЗаказТураУчастники.Ссылка.Дата, ЗаказТураУчастники.Участник) КАК трипосл ПО ЗаказТураУчастники.Участник = трипосл.Участник ГДЕ ЗаказТураУчастники.Ссылка.Проведен = ИСТИНА И ЗаказТураУчастники.Ссылка.Аннулирован = ЛОЖЬ И ЗаказТураУчастники.Ссылка.ПометкаУдаления = ЛОЖЬ |
|||
3
Ivan_495
27.06.17
✎
16:00
|
не пойму как при соединении указать, чтобы отбиралось только три документа
|
|||
4
Волшебник
модератор
27.06.17
✎
16:02
|
ВЫБРАТЬ ПЕРВЫЕ 3
... УПОРЯДОЧИТЬ ПО Дата УБЫВ |
|||
5
Ivan_495
27.06.17
✎
16:04
|
ВЫБРАТЬ
ЗаказТураУчастники.Участник, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказТураУчастники.Ссылка) КАК Ссылка ПОМЕСТИТЬ табл ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники СГРУППИРОВАТЬ ПО ЗаказТураУчастники.Участник |
|||
6
Адинэснег
27.06.17
✎
16:05
|
япать каша
|
|||
7
Адинэснег
27.06.17
✎
16:05
|
а если в ТЧ 0-2 участника?
|
|||
8
Адинэснег
27.06.17
✎
16:06
|
как определить "последнесть" участника? по номеру строки?
УПОРЯДОЧИТЬ ПО НомерСтроки УБЫВ |
|||
9
Ivan_495
27.06.17
✎
16:07
|
ВЫБРАТЬ
ЗаказТураУчастники.Участник, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказТураУчастники.Ссылка) КАК КолДок ПОМЕСТИТЬ табл ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники СГРУППИРОВАТЬ ПО ЗаказТураУчастники.Участник ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказТураУчастники.Ссылка) <= 3 |
|||
10
Адинэснег
27.06.17
✎
16:08
|
аа, тьфу на проектировщика/архитектора вашей системы
|
|||
11
Адинэснег
27.06.17
✎
16:14
|
сделай группировку и обходи с группировками
|
|||
12
Ivan_495
27.06.17
✎
16:18
|
да having должен быть
|
|||
13
Адинэснег
27.06.17
✎
16:19
|
ПоследниеТуры = Новый Соответствие;
Запрос = НОвый Запрос("ВЫБРАТЬ | ЗаказТураУчастники.Ссылка КАК Ссылка, | ЗаказТураУчастники.Участник КАК Участник, | ЗаказТураУчастники.Ссылка.Дата КАК Дата |ИЗ | Документ.ЗаказТура.Участники КАК ЗаказТураУчастники |ГДЕ | ЗаказТураУчастники.Ссылка.Проведен | И НЕ ЗаказТураУчастники.Ссылка.Аннулирован | |УПОРЯДОЧИТЬ ПО | ЗаказТураУчастники.Ссылка.Дата УБЫВ |ИТОГИ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Ссылка) |ПО | Участник"); ВыборкаУчастников = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаУчастников.Следующий() Цикл МассивТуров = Новый Массив; ВыборкаТуров = ВыборкаУчастников.Выбрать(); Пока ВыборкаТуров.Следующий() Цикл МассивТуров.Добавить(ВыборкаТуров.Ссылка); Если МассивТуров.Количество()=3 Тогда Прервать; КонецЕсли; КонецЦикла; ПоследниеТуры.Вставить(ВыборкаУчастников.Участник, ПоследниеТуры); КонецЦикла; |
|||
14
Ivan_495
27.06.17
✎
16:21
|
(13) да в скд нужно. иначе бы не спрашивал. запрос нужон.
|
|||
15
Адинэснег
27.06.17
✎
16:22
|
пардон в последне строке
ПоследниеТуры.Вставить(ВыборкаУчастников.Участник, МассивТуров); |
|||
16
Адинэснег
27.06.17
✎
16:22
|
заполни таблицу, передай как внешнийисточник)
|
|||
17
zladenuw
27.06.17
✎
16:25
|
через объединение наборов в скд. и там (4)
|
|||
18
Ivan_495
27.06.17
✎
16:26
|
ВЫБРАТЬ ПЕРВЫЕ 50
ЗаказТураУчастники.Участник, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказТураУчастники.Ссылка) КАК Ссылка ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники СГРУППИРОВАТЬ ПО ЗаказТураУчастники.Участник ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказТураУчастники.Ссылка) <= 3 |
|||
19
Ivan_495
27.06.17
✎
16:27
|
вот такой запрос отрабатывает, но не могу получить ссылку на документы
|
|||
20
Fragster
гуру
27.06.17
✎
16:30
|
похоже на вопрос с собеседования. ответ гуглится за 5 минут,
|
|||
21
Ivan_495
27.06.17
✎
16:34
|
(20) нагугли
|
|||
22
Адинэснег
27.06.17
✎
16:39
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказТураУчастники.Участник КАК Участник ПОМЕСТИТЬ Участники ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Участники.Участник КАК Участник, ЗаказТураУчастники.Ссылка КАК Ссылка ИЗ Участники КАК Участники ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники ПО (ЗаказТураУчастники.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 3 ЗаказТураУчастникиУ.Ссылка ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастникиУ ГДЕ ЗаказТураУчастникиУ.Участник = Участники.Участник УПОРЯДОЧИТЬ ПО ЗаказТураУчастникиУ.Ссылка.Дата УБЫВ)) |
|||
23
Адинэснег
27.06.17
✎
16:39
|
ну и условия на ложи
|
|||
24
Адинэснег
27.06.17
✎
16:40
|
наложи
|
|||
25
Адинэснег
27.06.17
✎
16:41
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказТураУчастники.Участник КАК Участник ПОМЕСТИТЬ Участники ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Участники.Участник КАК Участник, ЗаказТураУчастники.Ссылка КАК Ссылка ИЗ Участники КАК Участники ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники ПО (ЗаказТураУчастники.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 3 ЗаказТураУчастникиУ.Ссылка ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастникиУ ГДЕ ЗаказТураУчастникиУ.Участник = Участники.Участник И ЗаказТураУчастникиУ.Ссылка.Проведен И НЕ ЗаказТураУчастникиУ.Ссылка.Аннулирован УПОРЯДОЧИТЬ ПО ЗаказТураУчастникиУ.Ссылка.Дата УБЫВ)) |
|||
26
Ivan_495
27.06.17
✎
16:41
|
(25) круто. спасибо
|
|||
27
Адинэснег
27.06.17
✎
16:43
|
(26) привет СУБД передавай :-D
|
|||
28
Волшебник
модератор
27.06.17
✎
16:44
|
Что вы тут делаете? Ответ был в (4)
|
|||
29
Fragster
гуру
27.06.17
✎
16:45
|
(27) как ни странно, при правильных индексах это не медленнее трех соединений с самим собой с временными таблицами
|
|||
30
Ivan_495
27.06.17
✎
17:12
|
да тормозит мощно
|
|||
31
ColonelAp4u
27.06.17
✎
17:36
|
(30) Почему не хочешь сделать так как описали в 4? и быстро и то что тебе нужно
|
|||
32
Ivan_495
27.06.17
✎
17:38
|
(31) да вроде пробовал просто левым связать. вроде не те данные
|
|||
33
kumena
27.06.17
✎
17:42
|
> Что вы тут делаете? Ответ был в (4)
читай Нужно по КАЖДОМУ заказчику отобрать три последних заказа по дате. |
|||
34
kumena
27.06.17
✎
17:44
|
> Почему не хочешь сделать так как описали в 4? и быстро и то что тебе нужно
кто еще хочет хочет цикла? |
|||
35
kumena
27.06.17
✎
17:50
|
нужно выбрать все заказы,
сгруппировать по контрагентам, пронумеровать эти заказы назад по времени (или в какой последовательности они должны быть 1,2,3) потом отобрать все эти документы с нужными номерами. это все можно сделать одним запросом |
|||
36
kumena
27.06.17
✎
17:51
|
ну или поставить запрос из 4 в цикл.
|
|||
37
Ivan_495
27.06.17
✎
17:58
|
(35) пронумеровать в запросе
|
|||
38
Ivan_495
27.06.17
✎
18:09
|
хотелось бы увидеть этот запрос
|
|||
39
Адинэснег
28.06.17
✎
07:17
|
(30) добавь индекс
|
|||
40
Адинэснег
28.06.17
✎
07:45
|
ветку утопил, так и не поняв что его решение - не решение
форум пословиц и поговорок |
|||
41
Ivan_495
28.06.17
✎
09:38
|
(39) индекс по участнику добавил скорость не увеличилась
ВЫБРАТЬ РАЗЛИЧНЫЕ ЗаказТураУчастники.Участник КАК Участник ПОМЕСТИТЬ Участники ИЗ Документ.ЗаказТура.Участники КАК ЗаказТураУчастники ИНДЕКСИРОВАТЬ ПО Участник ; |
|||
42
Ivan_495
28.06.17
✎
09:48
|
(40) сорри ваш запрос работает нормально по скорости.
|
|||
43
Ivan_495
28.06.17
✎
10:15
|
оказывается тормоза появляются когда к запросу добавляешь условия
ГДЕ ЗаказТураУчастники.Ссылка.Проведен = ИСТИНА И ЗаказТураУчастники.Ссылка.Аннулирован = ЛОЖЬ И ЗаказТураУчастники.Ссылка.ПометкаУдаления = ЛОЖЬ |
|||
44
kumena
28.06.17
✎
14:38
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |