|
Простой запрос по максимуму. Вроде написал, но как-то коряво. | ☑ | ||
---|---|---|---|---|
0
Галахад
гуру
08.04.19
✎
10:24
|
Пример. Допустим нужно выбрать из табличной части документа "Номенклатуру" у которой "Сумма" самая большая.
Накропал вот так. Можно как-то улучшить? ВЫБРАТЬ ЧекККМТовары.Ссылка, МАКСИМУМ(ЧекККМТовары.Сумма) КАК Сумма ПОМЕСТИТЬ Т ИЗ Документ.ЧекККМ.Товары КАК ЧекККМТовары ГДЕ ЧекККМТовары.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО ЧекККМТовары.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Ссылка, Т.Сумма, ЧекККМТовары.Номенклатура ИЗ Т КАК Т ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Товары КАК ЧекККМТовары ПО Т.Сумма = ЧекККМТовары.Сумма И Т.Ссылка = ЧекККМТовары.Ссылка |
|||
1
Ёпрст
08.04.19
✎
10:28
|
(0) в первом запросе выкинуит из селекта ссылку и группировку по ней
|
|||
2
Ёпрст
08.04.19
✎
10:29
|
во втором запросе поставить условие на ссылка
|
|||
3
Fram
08.04.19
✎
10:29
|
Все верно вроде. Что не нравится?
|
|||
4
Ёпрст
08.04.19
✎
10:30
|
и выкинуть из условия соединения условие на ссылка
|
|||
5
RomanYS
08.04.19
✎
10:31
|
(0) Если таких строк несколько, возвращаться должна одна или все?
|
|||
6
ДенисЧ
08.04.19
✎
10:32
|
(4) А если будет несколько чеков с одинаковой суммой?
|
|||
7
RomanYS
08.04.19
✎
10:32
|
(0) Если есть условие = &Ссылка, то лучше выбрать первые 1
|
|||
8
Галахад
гуру
08.04.19
✎
10:34
|
(2) Это пример. В реальности не будет условия по конкретной ссылке.
(3) Работать-то работает. Но может и другие варианты есть? (5) Вообще одну. Но это пока не существенно. |
|||
9
Ёпрст
08.04.19
✎
10:34
|
(6) он всё равно в условии в первом запросе на 1 чек
|
|||
10
unregistered
08.04.19
✎
10:35
|
Почему группировка должна работать быстрее банального ВЫБРАТЬ ПЕРВЫЕ 1 ИЗ ... УПОРЯДОЧИТЬ ПО Сумма?
|
|||
11
unregistered
08.04.19
✎
10:37
|
Или я чего-то не понял, или запрос в (0) вообще никаким боком не относится к сформулированной задаче. Но тогда почему только я это вижу?
|
|||
12
Галахад
гуру
08.04.19
✎
10:38
|
(11) Может я не четко сформулировал задачу?
|
|||
13
unregistered
08.04.19
✎
10:38
|
к (10)* "УБЫВ" забыл.
...УПОРЯДОЧИТЬ ПО Сумма УБЫВ. |
|||
14
Галахад
гуру
08.04.19
✎
10:39
|
Убрал условие из первого запроса. Оно видимо смущает...
ВЫБРАТЬ ЧекККМТовары.Ссылка, МАКСИМУМ(ЧекККМТовары.Сумма) КАК Сумма ПОМЕСТИТЬ Т ИЗ Документ.ЧекККМ.Товары КАК ЧекККМТовары СГРУППИРОВАТЬ ПО ЧекККМТовары.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Ссылка, Т.Сумма, ЧекККМТовары.Номенклатура ИЗ Т КАК Т ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Товары КАК ЧекККМТовары ПО Т.Сумма = ЧекККМТовары.Сумма И Т.Ссылка = ЧекККМТовары.Ссылка |
|||
15
RomanYS
08.04.19
✎
10:41
|
(8) >> Вообще одну. Но это пока не существенно.
Момент достаточно принципиальный, чтобы потом (когда станет существенно) это разрулить будешь костыли пристраивать. Ещё вопрос: может ли в одном чеке быть одна номенклатура в нескольких строках? |
|||
16
unregistered
08.04.19
✎
10:42
|
(12) Я же не знаю что именно тебе нужно. Но запрос точно не выбирает самую большую по сумме номенклатуру. Он тупо сгруппирует строки с одинаковыми номенклатурами (если такие вообще будут в чеке) оставив максимальные суммы. Ну типа если есть чек с двумя строками "Номенклатура1" но с разными суммами, то в результате этого запроса останется одна строка с "Номенклатура1" с наибольшей суммой.
|
|||
17
RomanYS
08.04.19
✎
10:44
|
(16) ненене. Перечитай. Нет там группировки по номенклатуре, только по документу.
|
|||
18
Галахад
гуру
08.04.19
✎
10:46
|
(15) Хорошо. Ответ: несколько.
(16) Спасибо, что поправил. Мне нужно в каждом документе выбрать "Номенклатуру" с максимальной "Суммой" |
|||
19
unregistered
08.04.19
✎
10:46
|
(17) Ааааа. Увидел! Извиняюсь.
|
|||
20
trad
08.04.19
✎
10:48
|
(14)
ВЫБРАТЬ ЧекККМТовары.Ссылка, МАКСИМУМ(ЧекККМТовары.Сумма) КАК Сумма ПОМЕСТИТЬ Т ИЗ Документ.ЧекККМ.Товары КАК ЧекККМТовары СГРУППИРОВАТЬ ПО ЧекККМТовары.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Ссылка, МИНИМУМ(ЧекККМТовары.НомерСтроки) НомерСтроки ПОМЕСТИТЬ Т2 ИЗ Т КАК Т ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Товары КАК ЧекККМТовары ПО Т.Сумма = ЧекККМТовары.Сумма И Т.Ссылка = ЧекККМТовары.Ссылка СГРУППИРОВАТЬ ПО Т.Ссылка //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Ссылка, ЧекККМТовары.Сумма, ЧекККМТовары.Номенклатура ИЗ Т2 КАК Т ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ.Товары КАК ЧекККМТовары ПО Т.НомерСтроки = ЧекККМТовары.НомерСтроки И Т.Ссылка = ЧекККМТовары.Ссылка |
|||
21
trad
08.04.19
✎
10:49
|
(20) если в чеке несколько максимальных сумм, то получить первую
|
|||
22
_Дайвер_
08.04.19
✎
10:52
|
(10) +
|
|||
23
Галахад
гуру
08.04.19
✎
10:55
|
Понятно. Всем спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |