|
помогите с запросом | ☑ | ||
---|---|---|---|---|
0
novichok79
14.02.21
✎
18:18
|
Добрый вечер, уважаемые коллеги.
Есть таблица дублей, КЛ - контрагент слева, КП - контрагент справа ------- КЛ | КП ------- К1 | К2 К2 | К3 К3 | К4 - последняя запись в истории изменения документов, удостоверяющих личность, К4 создан позже, чем К3 можно ли как-то сгруппировать таблицу в запросе таким образом, чтобы было что-то вроде: К4 | К1 К4 | К2 К4 | К3 Можно заджойнить таблицу саму с собой несколько раз подряд, но это будет по джойну на каждую дочернюю связь, жесть. Есть ли более гуманные способы? Заранее благодарю за помощь. |
|||
1
novichok79
14.02.21
✎
18:18
|
То есть в результирующей таблице слева всегда самая поздняя запись, а справа типа ее история.
|
|||
2
RomanYS
14.02.21
✎
18:24
|
(0)>> но это будет по джойну на каждую дочернюю связь
Вроде при правильном подходе достаточно N джойнов для глубины 2^N |
|||
3
novichok79
14.02.21
✎
18:25
|
(2) пример в студию пжл
|
|||
4
RomanYS
14.02.21
✎
18:37
|
(3) лень ковырять
По идее у этого автора были статьи на эту тему http://catalog.mista.ru/1c/articles/1105799/ |
|||
5
novichok79
14.02.21
✎
18:42
|
(4) ну он там тоже Америку не открыл, у него иерархическая связь оформлена через последовательные запросы иерархии.
ладно буду дальше копать. спасибо. |
|||
6
Бишбармак
14.02.21
✎
18:43
|
А если во временную таблицу "самую последнюю запись" (выбрать первые 1 ....) и ПОЛНОЕ СОЕДИНЕНИЕ с второй таблицей.
.. или я сути вопроса не понял? |
|||
7
novichok79
14.02.21
✎
18:49
|
чтобы получить последнюю запись надо сначала построить некий граф зависимостей
типа К1 -> K2 -> K3 -> K4, потом взять из строки с 4мя (например) контрагентами взять того, у кого самая последняя запись в срезе последних, она и будет "мамкой" остальным вершинам графа, и потом уже выбрать таблицу, где будет K1 K4 K2 K4 K3 K4 |
|||
8
АНДР
14.02.21
✎
18:51
|
+7 Прежде чем строить цепочки, нужно найти первые или последние элементы в них.
|
|||
9
RomanYS
14.02.21
✎
18:56
|
(7) первым соединением получил
К1 | К2 | К3 К2 | К3 | К4 К3 | К4 | К4 вторым уже нужную таблицу. (2) - верно |
|||
10
novichok79
14.02.21
✎
18:59
|
(9) то есть соединил таблицу саму с собой, чтобы получить третью колонку, а другим джойном убрал строки ниже, которые уже вошли в цепочку выше, верно?
|
|||
11
RomanYS
14.02.21
✎
19:07
|
(10) Первым джойном получил родителей 2 уровня и и первого через ЕстьNULL: К3 | К4 | К4 <ЕстьNULL>,
вторым джойном (результата первого джойна с самим собой) - уровни 1-4, третим 1-8 ... |
|||
12
novichok79
14.02.21
✎
19:21
|
(11) ясно, попробую реализовать
|
|||
13
RomanYS
14.02.21
✎
19:22
|
(12) главное чтобы в данных колец не было, а то фигня получится))
|
|||
14
Cthulhu
14.02.21
✎
19:23
|
ну т.е. нумерации как таковой нет и сортировки тоже - я правильно понимаю?.. м.б. из
Х|Е Р|Н Н|Я Е|Р надо получить Я|Х Я|Е Я|Р Я|Н например... так?.. |
|||
15
Cthulhu
14.02.21
✎
19:24
|
тогда через скд вроде решается - Алгоритм Разузлование номенклатуры
|
|||
16
novichok79
14.02.21
✎
22:33
|
(15) там произвольный запрос требуется, поэтому СКД не подходит
|
|||
17
novichok79
14.02.21
✎
22:33
|
(15) а так да, разузлование номенклатуры я как-то делал через СКД, прикольно получилось
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |