|
Запрос: Выбрать 1 для каждого | ☑ | ||
---|---|---|---|---|
0
diesell
14.04.15
✎
14:46
|
Подскажите запрос, где на пример, для списка контрагентов, выбираются документы заказа, причем только первый документ.
Такой запрос: ВЫБРАТЬ ПЕРВЫЕ 1 ЗаказПокупателя.Ссылка КАК Заказ, ЗаказПокупателя.Контрагент ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ЗаказПокупателя.Проведен = ИСТИНА Выбирает только 1 заказ. А надо по 1 для всех контрагентов. Чет голова не может сообразить как. |
|||
53
Веселый молочник
14.04.15
✎
15:17
|
срез последних - это минимум/максимум определенного списка дат на определенную дату. в сабже - просто минимум/максимум
|
|||
54
Веселый молочник
14.04.15
✎
15:18
|
сдавайтесь. вы окружены
|
|||
55
ХардHard
14.04.15
✎
15:19
|
(52)
табл.Контр Табл.Дата Табл.Ссылка ЛевоеСоед Табл1.Контр = Табл2.Контр Табл2.Дата < Табл2.Дата Где табл2.Дата Есть Null |
|||
56
ХардHard
14.04.15
✎
15:21
|
(55) Писал левой ногой )
|
|||
57
Веселый молочник
14.04.15
✎
15:22
|
(55) ну в теории да, можно. но зачем.
|
|||
58
Веселый молочник
14.04.15
✎
15:24
|
(55) и если использовать твои аргументы - любая группировка с Мин и Макс - это срез последних на дату?
|
|||
59
ХардHard
14.04.15
✎
15:24
|
(57) Мож в книжке той так делали а вы тут спортие про > < .
Те же яйца |
|||
60
ХардHard
14.04.15
✎
15:25
|
(58) Где я такое писал ? Я писал что срезы можно делать как группировкой так и соединением 2ух одинаковых таблиц.
|
|||
61
Веселый молочник
14.04.15
✎
15:26
|
(60) ну т.е. любая группировка с Мин и Макс - это срез?
|
|||
62
Fragster
гуру
14.04.15
✎
15:26
|
(53) если уж оперировать, то оперировать множествами. для каждого элемента одного множества найти один элемент другого множества по какому-либо критерию. в сабже - два множества - контрагенты и заказы, в книге знаний - даты и курсы...
|
|||
63
Веселый молочник
14.04.15
✎
15:26
|
а где Defender aka LINN
|
|||
64
Fragster
гуру
14.04.15
✎
15:27
|
(63) он отчаялся донести для тебя то, что срез может быть не на дату, а на контрагента. в данном случае - срез первых заказов на каждого контрагента...
|
|||
65
Fragster
гуру
14.04.15
✎
15:28
|
"не на каждую дату,"
|
|||
66
Веселый молочник
14.04.15
✎
15:28
|
(62) если быть точнее - Контрагент, Заказ, Дата (сабж) и Документ, Дата, Валюта, Курс (статья).
|
|||
67
VasLe
14.04.15
✎
15:28
|
ВЫБРАТЬ
ЗаказПокупателя.Контрагент КАК Контрагент, ЗаказПокупателя.Ссылка КАК Ссылка ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК Фильтр ПО ЗаказПокупателя.Контрагент = Фильтр.Контрагент И ЗаказПокупателя.МоментВремени > Фильтр.МоментВремени ГДЕ Фильтр.Ссылка ЕСТЬ NULL |
|||
68
ХардHard
14.04.15
✎
15:28
|
(61) ДА с чего ты такой бред берешь? %)
|
|||
69
Fragster
гуру
14.04.15
✎
15:29
|
(66) Дата и контрагент множества заказов и контрагент множества контрагентов
|
|||
70
Веселый молочник
14.04.15
✎
15:30
|
(65) ну если срез первых заказов на каждого контрагента, тогда принимается.
|
|||
71
Fragster
гуру
14.04.15
✎
15:30
|
то, что множество контрагентов выделяется из того же множества заказов - ничего не меняет
|
|||
72
Fragster
гуру
14.04.15
✎
15:31
|
(70) первых, последних, даты, ссылки, какая разница? всё - тлен. просто "срез последних на каждую дату" - это уже устоявшееся за годы название задачи, так как впервые она возникла именно в такой формулировке.
|
|||
73
Веселый молочник
14.04.15
✎
15:31
|
(69) если честно то уже начинаю терять нить
|
|||
74
Fragster
гуру
14.04.15
✎
15:32
|
это как задача о рюкзаке, или задача коммивояжера
|
|||
75
Веселый молочник
14.04.15
✎
15:33
|
(72) в том то и дело. это устоявшееся название задачи именно для "срез последних на каждую дату". именно для тех задач, которые в ссылке. а в сабже просто задача про Мин/Макс, который нужно использовать два раза
|
|||
76
Fragster
гуру
14.04.15
✎
15:33
|
(53) определи для каждого склада ячейку с наибольшей вместимостью? для каждого покупателя наибольшую просрочку за последний год? и т.п.
|
|||
77
Fragster
гуру
14.04.15
✎
15:34
|
(75) "на каждую дату" = "для каждого контрагента", "срез последних" = "первый документ заказ покупателя"
|
|||
78
DexterMorgan
14.04.15
✎
15:34
|
молочник ты дебил, это типичная задача среза на каждую дату в запросе
|
|||
79
Fragster
гуру
14.04.15
✎
15:35
|
(77) всё тлен, повторюсь
|
|||
80
Веселый молочник
14.04.15
✎
15:35
|
(78) не аргумент
|
|||
81
DexterMorgan
14.04.15
✎
15:36
|
(80) оставайся им дальше
|
|||
82
Веселый молочник
14.04.15
✎
15:36
|
(77) реши задачу "среза последних" используя только Минимум/Максимум и не используя > <
|
|||
83
ХардHard
14.04.15
✎
15:39
|
(82) в (16) поменяй мин на мах и ограничение верхнее поставь в первой табличке на дату.
|
|||
84
Fragster
гуру
14.04.15
✎
15:40
|
(82) Выбрать Валюта, Максимум(Дата) Поместить Максимумы Из РС.Валюты;
Выбрать Валюты.Валюта, Валюты.Курс Из Валюты Внутреннее соединение Максимумы по Валюты.Валюта = Максимумы.Валюта и Валюты.Дата = Максимумы.Дата |
|||
85
fisher
14.04.15
✎
15:42
|
А еще такой вариант есть:
ВЫБРАТЬ ЗаказПокупателя.Ссылка КАК Заказ, ЗаказПокупателя.Контрагент ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ЗаказПокупателя.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 1 З.Ссылка ИЗ Документ.ЗаказПокупателя КАК З ГДЕ З.Контрагент = ЗаказПокупателя.Контрагент УПОРЯДОЧИТЬ ПО З.Дата) Рулит если несколько последних надо. |
|||
86
Веселый молочник
14.04.15
✎
15:42
|
(84) в этом случае ты вроде как всегда будешь получать самый последний курс? не?
|
|||
87
Fragster
гуру
14.04.15
✎
15:42
|
(82) то, что критерий отбора из того множества, в котором мы ищем соответствие может быть "максимальная дата", а моежт быть и "максимальная дата, меньшая указанной", а может быть и "минимальная дата для определенного контрагента" - разве не одно и то же?
|
|||
88
Fragster
гуру
14.04.15
✎
15:42
|
(86) для каждой валюты
|
|||
89
Веселый молочник
14.04.15
✎
15:44
|
(87) не одно, ибо ты упустил кое-что. "максимальная дата, меньшая указанной" + для определенного чего-то (номенклатуры/валюты). ключевое отличие таки в "меньше указанной".
|
|||
90
Fragster
гуру
14.04.15
✎
15:45
|
(89) какое это имеет значение для общего случая?
|
|||
91
Веселый молочник
14.04.15
✎
15:45
|
(88) ну и что для каждой валюты. а нам нужно для каждой валюты не последний курс этой валюты, а последний курс этой валюты "к определенной дате"
|
|||
92
Веселый молочник
14.04.15
✎
15:45
|
(90) думаю у меня все-таки есть определенные трудности с донесением своей идеи
|
|||
93
Веселый молочник
14.04.15
✎
15:46
|
(90) все таки, попробуй ответить на (82). в (84) решение неверное
|
|||
94
Fragster
гуру
14.04.15
✎
15:47
|
(91)
![]() |
|||
95
Веселый молочник
14.04.15
✎
15:48
|
(94) подожду ответа на (82))))
|
|||
96
Веселый молочник
14.04.15
✎
15:51
|
попробую по другому. Сабж - это срез последних. Но не на каждую дату. А просто "СрезПоследних". Точнее первых.
|
|||
97
Fragster
гуру
14.04.15
✎
15:53
|
(95) это все равно, что сказать тебе "реши задачу из (0), но для заказов, поступивших с начала года"
|
|||
98
Fragster
гуру
14.04.15
✎
15:53
|
какая разница, какой критерий отбора и какой критерий сортировки?
|
|||
99
Веселый молочник
14.04.15
✎
15:54
|
(97) нифига, не путай задачи.
|
|||
100
Fragster
гуру
14.04.15
✎
15:54
|
(100)
|
|||
101
Веселый молочник
14.04.15
✎
15:55
|
кроссавчег
|
|||
102
Веселый молочник
14.04.15
✎
15:55
|
РегистрСведенийМенеджер.<Имя регистра сведений>.СрезПервых (InformationRegisterManager.<Имя регистра сведений>.SliceFirst)
РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>) СрезПервых (SliceFirst) Синтаксис: СрезПервых(<НачалоПериода>, <Отбор>) Параметры: <НачалоПериода> (необязательный) Тип: Дата; МоментВремени; Граница. Определяет момент времени, начиная с которого необходимо выбрать записи. Если параметр не указан, то будут получены записи без ограничения по времени. <Отбор> (необязательный) Тип: Структура. Структура, содержащая отбор по измерениям и реквизитам регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение. Структура дополнительно может иметь элементы, соответствующие разделителям регистра с уровнем разделения НезависимоИСовместно, в состав которых входит регистр. Если такой элемент структуры задан для используемого в сеансе разделителя, значение для этого элемента должно совпадать со значением разделителя, иначе будет вызвано исключение. Если параметр не указан, то отбор не используется. Возвращаемое значение: Тип: ТаблицаЗначений. Таблица значений, заполненная данными найденных записей регистра сведений. Описание: Получает наиболее ранние записи регистра, соответствующие установленным в параметрах метода значениям ключевых полей. Записи подбираются для каждого сочетания из всех имеющихся значений измерений регистра. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Применим только для периодических регистров сведений. Пример: МаркетингЦен = РегистрыСведений.МаркетингЦен; ОбновленныеСегодняЦены = МаркетингЦен.СрезПервых(ТекущаяДата()); |
|||
103
Fragster
гуру
14.04.15
✎
15:55
|
(99) задача - найти один (из нескольких) элемент одного множества, соответствующий одному элементу другого множества по некоторому критерию соответствия.
|
|||
104
Веселый молочник
14.04.15
✎
15:55
|
в сабже классический срез первых.
|
|||
105
Fragster
гуру
14.04.15
✎
15:57
|
(104) ну поменяй в сабже "найти заказ с наибольшей суммой". от этого ничего не изменится.
|
|||
106
Веселый молочник
14.04.15
✎
15:57
|
(103) в том то и дело. по некоторому критерию. но находящемуся не внутри одного из множеств, а снаружи - Конкретная дата, которая передается в запрос. ну я имею ввиду твой пример "для заказов, поступивших с начала года"
|
|||
107
Веселый молочник
14.04.15
✎
15:58
|
(105) все правильно. ничего не изменится. можно применить "срез первых/последних", только будет анализироваться сумма, а не дата. но опять же - просто срез. а не срез на дату.
|
|||
108
Fragster
гуру
14.04.15
✎
15:59
|
(106) ну ладно, "заказ с наибольшей суммой, которая была после заказа с наименьшей суммой". всё внутри одного множества
|
|||
109
Веселый молочник
14.04.15
✎
15:59
|
чет Defender aka LINN приуныл...
|
|||
110
Fragster
гуру
14.04.15
✎
16:00
|
(109) ему руку от лица не оторвать
|
|||
111
Веселый молочник
14.04.15
✎
16:00
|
(108) ну нифига ты загнул
|
|||
112
Fragster
гуру
14.04.15
✎
16:01
|
||||
113
Веселый молочник
14.04.15
✎
16:01
|
ну пока я так и не получил ни ответ на (82), ни доказательства, что в сабже не просто срез первых, а именно срез первых на дату
|
|||
114
Веселый молочник
14.04.15
✎
16:01
|
(112) баян, см (78)
|
|||
115
Веселый молочник
14.04.15
✎
16:02
|
кстати, а где не дебил DexterMorgan
|
|||
116
Fragster
гуру
14.04.15
✎
16:03
|
(113) принципиального отличия между "т1.контрагент = т2.контрагент" и "т1.Дата >= т2.дата" нет
|
|||
117
Веселый молочник
14.04.15
✎
16:05
|
(116) т.е. ты хочешь сказать что нет принципиальных отличий в срезе последних и в срезе последних на дату?
|
|||
118
Веселый молочник
14.04.15
✎
16:05
|
(116) т.е. ты хочешь сказать что нет принципиальных отличий в срезе последних и в срезе последних на КАЖДУЮ дату?
|
|||
119
Веселый молочник
14.04.15
✎
16:06
|
прошу прощения. везде, где выше сравнивал срез последних и срез последних на дату - следую читать как "сред последних (естественно на дату) и срез последних на каждую дату"
|
|||
120
Drac0
14.04.15
✎
16:06
|
как я вовремя покинул этот театр абсурда. На ровном месте развели срач ,жесть.
|
|||
121
bolobol
14.04.15
✎
16:06
|
Всё не читал, но 115+ сообщений к ответу ГРУПП(Контр), МИН(Дата, Ссылка)...
Автор явно кого-то явно троллит) |
|||
122
Веселый молочник
14.04.15
✎
16:06
|
(120) ну дык. опыт не пропьешь
|
|||
123
ХардHard
14.04.15
✎
16:07
|
(121) Автор давно получил ответ и ушел.
|
|||
124
Fragster
гуру
14.04.15
✎
16:07
|
(118) да
|
|||
125
Веселый молочник
14.04.15
✎
16:07
|
(121) автор давно получил ответ в (16) и ушел)
давай присоединяйся. срез на дату и срез на каждую дату запроса - одно и тоже? и сможешь (82) решить? |
|||
126
bolobol
14.04.15
✎
16:08
|
(123) А, да? Хм... А чего обсуждаем?
|
|||
127
Fragster
гуру
14.04.15
✎
16:08
|
(125) представь, что дата - это одно из измерений. то же самое, что контрагент или валюта...
|
|||
128
Веселый молочник
14.04.15
✎
16:08
|
(124) однако срез последних на дату без соединения по условию больше меньше не решить? так?
|
|||
129
bolobol
14.04.15
✎
16:09
|
(125) Срез на каждую дату - это много срезов на дату. Тут ясно. А 82 - сейчас гляну)
|
|||
130
Веселый молочник
14.04.15
✎
16:10
|
(127) не, маленькими шажками мне в твою вселенну не погрузиться. ты сразу все выдавай.
|
|||
131
Fragster
гуру
14.04.15
✎
16:10
|
(128) я тебе не про условие соединения больше или меньше. там может быть ЛЮБОЕ условие соединения. то, что у тебя там "равно", а критерий поиска единственной записи - это "минимум" - это частный случай.
|
|||
132
ХардHard
14.04.15
✎
16:13
|
(125) Одно и тоже . Дата1 - дата документ (как в сабже контрагент)
Дата2 - дата курса (как в сабюе дата документа) дальше все тоже самое. |
|||
133
Fragster
гуру
14.04.15
✎
16:13
|
(131) то, что одна и та же таблица является и источником одного и второго множества - также частный случай
|
|||
134
Веселый молочник
14.04.15
✎
16:14
|
ладно, попробую вернуться в область, где почти запутался. к сущностям и прочей херне.
в сабже - у нас один источник информации, он самодостаточен, в нем есть все, просто его нужно правильным образом сгруппировать. в случае же среза на каждую дату - у нас есть два источника - например документы с датами и курсы с датами. |
|||
135
Веселый молочник
14.04.15
✎
16:15
|
(133) ну тут уже почти готов на мировую, ибо судя по всему разные взгляд на одно и тоже.
|
|||
136
Веселый молочник
14.04.15
✎
16:16
|
(133) ибо для меня это не частный случай
|
|||
137
bolobol
14.04.15
✎
16:17
|
(82): реши задачу "среза последних" используя только Минимум/Максимум и не используя > <
Ссылка. Число 01/02.. 15 02/02.. 22 03/02.0 37 03/02.1 36 04/02.. 28 05/02.. 29 СрезПоследних: ВЫБРАТЬ МАКС(Ссылка) ПОМЕСТИТЬ МаксСсылка ИЗ Таб ГДЕ Дата = "03/02" ВЫБРАТЬ Число ИЗ МаксСсылка ВНУТРЕННЕЕ Таб ПО Ссылка = Ссылка Не оно? <> вообще не смог прикрутить... |
|||
138
Бледно Золотистый
14.04.15
✎
16:17
|
Узбагойся уже. Прав ты, прав, возьми печеньку с полки.
|
|||
139
Fragster
гуру
14.04.15
✎
16:17
|
(136) ну считай, что где-то там есть "Выбрать Различные Контрагент Поместить МножествоКонтрагентов Из Заказы"
|
|||
140
Fragster
гуру
14.04.15
✎
16:19
|
на эту тему есть неплохой анекдот
Как убить синего слона? Ответ: ружьём для синего слона Как убить красного слона? Ответ: ружьём для красного слона Как убить зелёного слона? Ответ: Нет, не ружьем для зелёного слона! Нужно взять палку и бить слона, пока он не посинеет, после этого можно воспользоваться ружьём для синего слона! |
|||
141
Веселый молочник
14.04.15
✎
16:19
|
(137) мой косяк. имелось ввиду срез последних на каждую дату
|
|||
142
Fragster
гуру
14.04.15
✎
16:20
|
и даже - Как убить синего слона?
- Из винтовки для синих слонов. - А как убить красного слона? - Его надо душить, до тех пор пока он не посинеет, затем застрелить из винтовки для синих слонов. - А как убить зеленого слона? - Нужно рассказывать ему похабные анекдоты, пока он не покраснеет, затем душить, пока не посинеет, затем застрелить из винтовки для синих слонов. - А как убить желтого слона? - Дурак, желтых слонов не бывает! |
|||
143
Веселый молочник
14.04.15
✎
16:22
|
все-таки срез последних и срез последних на каждую дату - это разные вещи. и принцип получения отличается.
|
|||
144
Веселый молочник
14.04.15
✎
16:23
|
ключевое - "на каждую дату"
|
|||
145
Веселый молочник
14.04.15
✎
16:26
|
ну чего вы, не сдавайтесь
|
|||
146
koreav
14.04.15
✎
16:27
|
походу в молоке что-то
|
|||
147
Бледно Золотистый
14.04.15
✎
16:28
|
(146) Да просто таблетки не принял вовремя. Весна.
|
|||
148
Веселый молочник
14.04.15
✎
16:29
|
(146) (147) присоединяйтесь, срач отменный, всем хватит
|
|||
149
bolobol
14.04.15
✎
16:29
|
(144) Так там просто "ГДЕ Дата = "03/02"" убрать надо, ГРУПП(Дата) добавить. Будет каждой даты срез, не?
|
|||
150
Веселый молочник
14.04.15
✎
16:40
|
(149) тогда вообще не понятно что получается, возьми пример из базы знаний по ссылке, и убери там <>
|
|||
151
Bober
14.04.15
✎
16:43
|
(140) хочешь спасти человека? возможно он еще не достиг предела в платформенных механизмах.
|
|||
152
bolobol
14.04.15
✎
16:52
|
(150) Вы в смысле что я отбираю в каждую дату срез последних? Ну, да - в (0) задача именно такая - для каждого имеющегося контрагента (в моём примере Даты) - получить максимальное.
А если ещё и саму дату надо будет сравнивать на непревышение (т.е. имеем отсутствующие даты в исходной таблице) - то знаки сравнения на непревышение использовать придётся - это ограничительный момент, который к (0) не относится. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |