|
Помогите с простым запросом | ☑ | ||
---|---|---|---|---|
0
Мигрень
07.08.22
✎
15:48
|
Нужно выбрать ПОСЛЕДНИЕ Заказы клиентов за месяц в разрезе покупателей
|
|||
1
RomanYS
07.08.22
✎
15:52
|
(0) бери заказы с максимальными датами. Или коррелированный запрос
|
|||
2
Мигрень
07.08.22
✎
15:55
|
(1) коррелированнный запрос не знаю что такое. Понятно что заказы с максимальными датами, но что-то не соображу, наверное тут будет соединение внутреннее двух запростов что ли..
|
|||
3
RomanYS
07.08.22
✎
16:05
|
Сначала группировкой собираешь максимальные даты, потом по ним соединяешь с исходной. Только документов с одинаковой датой может быть много
|
|||
4
PR
07.08.22
✎
16:06
|
Сначала выбираешь из Заказы ВТ1 с максимальными датами покупателей
Потом выбираешь из ВТ1 ЛС Заказы по контрагенту и дате ВТ2 с максимальными регистраторами покупателей |
|||
5
Мигрень
07.08.22
✎
16:08
|
(3), (4) да нашел уже что-то подобное здесь v8: v8: выбрать регистратор с максимальной датой пойду курить консоль запросов
|
|||
6
PR
07.08.22
✎
16:12
|
(5) Говно какое-то
|
|||
7
Мигрень
07.08.22
✎
16:13
|
(6) чой-то, предпоследний пост в той ветке вполне себе перспективная идея
|
|||
8
PR
07.08.22
✎
16:23
|
(7) Ну да ну да
Прочитай внимательно (3) |
|||
9
Мигрень
07.08.22
✎
16:40
|
(8) не пойму, как у заказов, которые последовательно падают из CRM, может быть одинаковое время
|
|||
10
PR
07.08.22
✎
16:42
|
(9) Удачи
|
|||
11
alarm2020
07.08.22
✎
16:53
|
(0) Просто сделай срез последних.
1. Группировка по покупателям + МАКСИМУМ(Дата) 2. Соединение этой таблицы с исходной |
|||
12
PR
07.08.22
✎
16:55
|
(11) Вот еще один одаренный чукча не читатель
|
|||
13
RomanYS
07.08.22
✎
17:06
|
(4) Давай немного усложним задачу: нужно получить по 3 последних заказа от каждого покупателя.
|
|||
14
PR
07.08.22
✎
17:08
|
(13) Зачем?
|
|||
15
Мигрень
07.08.22
✎
17:11
|
(11) да собственно уже сделал, всё работает. PR специально жути нагоняет, видимо ему скучно
|
|||
16
PR
07.08.22
✎
17:14
|
(15) Да, мы профессионалы такие, постоянно жути нагоняем, от скуки, думаю
|
|||
17
Мигрень
07.08.22
✎
17:16
|
(16) не надо усложнять там, где частный случай позволяет обойтись простым решением. Такое усложнение - это дилетантизм
|
|||
18
PR
07.08.22
✎
17:23
|
(17) Боже мой, из альтруистических побуждений учишь дилетанта уму разуму, а дилетант еще с напыщенным видом что-то задвигает про усложнения и дилентатизм
Да удачи тебе от всей души, продолжай дальше с умным видом плескаться в своем свином корытце :)) |
|||
19
PR
07.08.22
✎
17:28
|
+(14) Если вопрос из чисто спортивного интереса, то ответ из чисто спортивного интереса следующий
Если нужно получить небольшое количество последних заказов, ну то есть 3 или 5 То делается 3 или 5 ВТ, в каждой из которых выбираются максимумы, но без предыдущих ВТ Потом все эти 3 или 5 ВТ соединяются с заказами и потом все эти соединенные таблицы объединяются А вот если нужно, выбрать, например, по 100 последних заказов, тогда сотню ВТ рисовать уже не очень, нужно придумывать что-то другое |
|||
20
Мигрень
07.08.22
✎
17:32
|
(18) я бы в понедельник сходил в поликлинику, нервы вообще ни к черту
|
|||
21
PR
07.08.22
✎
17:35
|
(20) Сходи, я не против, мне-то ты зачем об этом сообщаешь
|
|||
22
Мигрень
07.08.22
✎
17:36
|
(21) да так просто, мысли вслух такскать. Ну покеда, учитель, мне работать надо
|
|||
23
RomanYS
07.08.22
✎
17:41
|
(19) Всё уже придумано. Называется коррелированный запрос.
|
|||
24
PR
07.08.22
✎
17:42
|
(23) Напишешь запроса для сабжа?
|
|||
25
PR
07.08.22
✎
17:44
|
+(24) А то термин я тоже слышал, всегда хотел посмотреть, что это за зверь такой коррелированный запрос и чем от обычного соединения отличается
|
|||
26
RomanYS
07.08.22
✎
17:44
|
(19) А ещё в свежих платформах есть АВТОНОМЕРЗАПИСИ, что позволяет в данной задаче получить уникальный ключ и обойтись без (4)
|
|||
27
RomanYS
07.08.22
✎
17:50
|
(24) гуглится же на раз.
ВЫБРАТЬ ЗаказПокупателя.Ссылка, ЗаказПокупателя.Контрагент ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ЗаказПокупателя.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 3 Док.Ссылка КАК Ссылка ИЗ Документ.ЗаказПокупателя КАК Док ГДЕ Док.Контрагент = ЗаказПокупателя.Контрагент УПОРЯДОЧИТЬ ПО Док.Дата убыв, Ссылка убыв) |
|||
28
PR
07.08.22
✎
18:11
|
(27) И сколько будет записей в итоге на двух контрагентов, где по три заказа одной и той же датой на каждого контрагента?
|
|||
29
RomanYS
07.08.22
✎
18:33
|
(28) запрос решает задачу (13), будут отобраны по 3 заказа (при их наличии), порядок задается внутри вложенного запроса
|
|||
30
PR
07.08.22
✎
18:35
|
(29) У тебя будет 18 строк
А должно быть 6 |
|||
31
RomanYS
07.08.22
✎
18:48
|
(30) перечитай текст запроса, а лучше запусти в консоли. По 2 контрагентам никогда там не будет больше 6 строк
|
|||
32
PR
07.08.22
✎
18:50
|
(31) Ладно, не буду спорить, что-то подутомило уже сегодня воевать с ветряными мельницами
|
|||
33
Said_We
07.08.22
✎
20:51
|
(27) Не проверял, но не похоже. "Выбрать первые 3" вернет всего три ссылки. На сколько я понимаю, для каждого контрагента необходимо по 3 последних заказа.
Так как в 1С нет полноценного ROW_NUMBER() и оконных функций, то левое соединение таблицы с сома собой. |
|||
34
RomanYS
07.08.22
✎
21:02
|
(33) см. (31), добавить нечего.
И да теперь есть АВТОНОМЕРЗАПИСИ - теперь можно решать такие задачи без коррелированных запросов |
|||
35
Said_We
07.08.22
✎
21:35
|
(34) А то что в (0) написано "в разрезе покупателей" - о чём говорит?
По мне так говорит, что для каждого покупателя необходимо искать последние. Не знаю откуда появилось 3, а не 1 или 5. Всю ветку не читал. |
|||
36
Said_We
07.08.22
✎
21:39
|
(34) Обрезанный ROW_NUMBER(), который есть в 1С и без оконных функций не решает задачи без коррелированных запросов.
В 1С всё равно джоином саму с собой цеплять надо. "Вырезание гланд автогеном через Жо", но по другому пока в 1С никак. |
|||
37
RomanYS
07.08.22
✎
22:13
|
(35) >> Всю ветку не читал.
Ну давай перескажу вкратце В (27) решение задачи (13). Да, оно для каждого контрагента найдет по 3 заказа. Да, это коррелированный запрос. (36)>> В 1С всё равно джоином саму с собой цеплять надо. Одним джойном, без (4) и без (19) |
|||
38
Said_We
07.08.22
✎
22:50
|
(37) "Да, это коррелированный запрос." - точно?
|
|||
39
PR
07.08.22
✎
22:50
|
(37) Кстати, да, будет не 18 строк, а 6
Не знаю, правда, для выборки последнего документа будет оптимальнее так или с использованием ВТ и максимумов |
|||
40
PR
07.08.22
✎
22:52
|
(38) А что тебя смущает?
1С умеет коррелированные запросы только такого плана, когда в условии запрос с использованием поля из основного запроса |
|||
41
Said_We
07.08.22
✎
23:04
|
(40) Там их несколько видов. Не помню этот вид относится или нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |