Имя: Пароль:
1C
 
запрос поиск по 2 колонкам
,
0 Ma3eIIa
 
08.04.15
18:23
Есть колонки Колонка1 | Колонка2
                А          Б
                Б          В
                В          Г  и.д.
У меня есть только параметр А, как мне получить все значения по колонке2 ?
1 Ненавижу 1С
 
гуру
08.04.15
18:24
ничего нн понял
2 фобка
 
08.04.15
18:25
Select tab.колонка2 from tab as tab where tab.колонка1 = 'Б'
3 Ma3eIIa
 
08.04.15
18:25
То есть мне надо условие что Колонка2 с пред строки  = Колонке1 тек строке
4 фобка
 
08.04.15
18:27
(3) holy shit...
5 bolobol
 
08.04.15
18:28
Для начала, строки должны иметь последовательность, чтобы существовало понятие "предыдущая строка". Иначе - она может быть любой.
6 D_E_S_131
 
08.04.15
18:28
(3) А получить данные какие хочешь?
7 1976vas
 
08.04.15
18:29
(6) + и связь какая
8 Ma3eIIa
 
08.04.15
18:31
Это табличная часть.
Первый поиск идет по Колонке1 = &Параметр.
Получаю Колонку2, дальше нужно повторить для всех вхождений.
Типа поиск составляющих детали.
9 Ma3eIIa
 
08.04.15
18:32
Есть типа изделие. мне нужно получить ее материалы.
10 Ma3eIIa
 
08.04.15
18:33
Цикл решает вопрос. но как в запросе
11 D_E_S_131
 
08.04.15
18:34
Помнится в "Рарус-Общепит" функция развертки ингредиентов блюда была зашифрована в ключе. :)
12 Ma3eIIa
 
08.04.15
18:35
(11) да походу цикл :) запросом пока не осилил.
13 Ma3eIIa
 
08.04.15
18:35
(12) вернее запрос в цикле
14 Ненавижу 1С
 
гуру
08.04.15
18:43
Считай, что значения вершины графа, а строки таблицы - указывают на ребра
Так вот по вершине А тебе нужно получить все вершины связные с А.
Алгоритм имеет сложность O(n^2), а такие задачи запросом увы не решить
15 Ma3eIIa
 
08.04.15
18:44
так у меня динамический список. что в тупую собирать запрос ?
16 Ma3eIIa
 
08.04.15
18:53
17 Ненавижу 1С
 
гуру
08.04.15
18:53
тебе нужны для каждого изделия получить список базовых (не собираемых) материалов для него что ли?
18 Ma3eIIa
 
08.04.15
18:54
да
19 Ma3eIIa
 
08.04.15
18:54
но я знаю потреблящию партию, нужно найти партию размещения. и так все которые
20 Ma3eIIa
 
08.04.15
18:55
ВЫБРАТЬ
    "А" КАК Поле1,
    "Б" КАК Поле2
ПОМЕСТИТЬ ВТ_Таблица

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Б",
    "В"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "В",
    "Г"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Д",
    "Е"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Таблица.Поле1,
    ВТ_Таблица.Поле2
ИЗ
    ВТ_Таблица КАК ВТ_Таблица
ГДЕ
    ВТ_Таблица.Поле1 = &Параметр

Вот пример. мне нужно получить все значение с колонки2
21 Ненавижу 1С
 
гуру
08.04.15
18:55
(19) надо на стадии формирования это где-то хранить
22 Ненавижу 1С
 
гуру
08.04.15
18:56
(16) там видишь слова loop и connect by?
это скрытые циклы, в 1С так язык запросов не умеет
23 Ma3eIIa
 
08.04.15
18:58
(22) да я понял это. когда она будет такое уметь. а то динамо перестает быть динамо
24 Ma3eIIa
 
08.04.15
19:01
ех рекурсия в запросе. мечта .... если в данных была бы еще колонка связи. то проблем нет. а так. короче только цикл :(
25 Ma3eIIa
 
08.04.15
19:03
или 100 пакетов :) но за такое точно не погладят по голове. лучше уже цикл
26 Михаил Козлов
 
09.04.15
10:04
Если правильно понял, речь идет о транзитивном замыкании графа. В таком разе, если не лень, можно попробовать такой прием (на уровне идеи).
Умножение матрицы смежности на себя даст достижимость вершин не более чем за 2 шага. Если полученную матрицу умножить опять саму на себя - достижимость не более чем за 4 шага. Т.е., если проделать такую операцию n раз - получим достижимость за 2^n шагов. Т.е. реально это нужно делать не так уж много раз.
Умножение матриц в запросом есть в http://infostart.ru/public/195848/
Присоединяюсь к (21).