|
Спецы по запросам, к вам челОм бью | ☑ | ||
---|---|---|---|---|
0
Alex33
27.09.11
✎
16:12
|
Есть справочник "Контрагенты". Есть справочник "Коэффициенты" с реквизитами "ГруппаКонтрагентов" (куда выбирается группа контрагентов) и "Коэффициент". Можно ли в запросом получить табличку соответствий "Контрагент-Коэффициент", где контрагенты входят в группы из справочника "Коэффициенты" ? Несколько сумбурно обьясняюсь, но, надеюсь, поймете. Вставить коэффициент непосредственно в справочник Контрагенты - не предлагать. Заранее спасибо.
|
|||
1
shuhard
27.09.11
✎
16:12
|
(0) да
|
|||
2
aleks-id
27.09.11
✎
16:13
|
пицот рублей
|
|||
3
Gesperid10
27.09.11
✎
16:14
|
499 =)
|
|||
4
acsent
27.09.11
✎
16:14
|
только если ограничена иерархия
|
|||
5
DrShad
27.09.11
✎
16:14
|
я в принципе не имею ничего против, делай
|
|||
6
Alex33
27.09.11
✎
16:14
|
(1) - а пример нельзя показать?
|
|||
7
Alex33
27.09.11
✎
16:14
|
(4) - иерархия, к сожалению, не ограничена
|
|||
8
catena
27.09.11
✎
16:14
|
соединение по контрагенты.владелец=Коэффициенты.ГруппаКонтрагентов, если правильно поняла...
|
|||
9
catena
27.09.11
✎
16:15
|
(7)А, о, сложнее :)
|
|||
10
butterbean
27.09.11
✎
16:18
|
(7) красиво запросом не получится, нужно вычислять максимальный уровень вложенности
|
|||
11
Alex33
27.09.11
✎
16:19
|
(10) - вот и меня такие же мысли, и грустно от этого...
|
|||
12
Maxus43
27.09.11
✎
16:26
|
запросом можно получить всех родителей конкретного контрагента, но не красиво... а ещё потом соединять с непойми чем... в коде обработать проще будет, там есть ПринадлежитЭлементу() и т.д.
|
|||
13
Alex33
27.09.11
✎
16:28
|
(12) - согласен, что в коде обработать проще, но хотелось, чтобы было красиво...
|
|||
14
Maxus43
27.09.11
✎
16:28
|
запросом красиво не получится. понятней будет в коде
|
|||
15
hhhh
27.09.11
✎
16:29
|
(13) как-то так
ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Коэффициенты КАК Коэффициенты ПО Контрагенты.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ ... |
|||
16
Alex33
27.09.11
✎
16:35
|
(15) - да, такая конструкция приходила в голову, но уж больно оно некрасиво. Я всё вымучиваю: ну а вдруг можно как-нибудь хитро и универсально запросить...
|
|||
17
IKSparrow
27.09.11
✎
16:37
|
10499.
по пять штук нам с тобой и 499 тому парню. |
|||
18
OldFornit
27.09.11
✎
16:42
|
В рамках СКД - легко. Голым запросом - заколебешься.
|
|||
19
VasRogov
27.09.11
✎
17:04
|
(15) ИМХО можно просто вот так:
ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Коэффициенты КАК Коэффициенты Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов |
|||
20
hhhh
27.09.11
✎
17:07
|
(19) не получается, к сожалению.
|
|||
21
Steelvan
27.09.11
✎
17:40
|
Можно идти от обратного. Сначала разложить Коэфф. - Группа до таблицы, где будут все группы с из Коэфф.
|
|||
22
Steelvan
27.09.11
✎
17:42
|
Делать тз, потом эту тз пихать во временную таблицу и в запросе делать соединение с этой таблицей.
|
|||
23
sda553
27.09.11
✎
17:52
|
В два запроса,
- первым считаем максимальный уровень вложенности на тек. момент - Второй запрос строится в зависимости от результатов первого по типу как в (15) |
|||
24
Ochkarito
27.09.11
✎
18:00
|
(0)Попробуй так (за оптимальность работы запроса не ручаюсь):
ВЫБРАТЬ Контрагенты.Ссылка, Коэффициенты.Коэффициент ИЗ Справочник.Контрагенты КАК Контрагенты ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Коэффициенты КАК Коэффициенты ПО (Контрагенты.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ Коэффициенты.ГруппаКонтрагентов ИЗ Справочник.Коэффициенты КАК Коэффициенты)) ГДЕ Контрагенты.ЭтоГруппа = ЛОЖЬ |
|||
25
Alex33
27.09.11
✎
18:09
|
(24) - Данный запрос выберет все сочетания Контрагентов и Коэффициентов
|
|||
26
Alex33
27.09.11
✎
18:27
|
В качестве решения выбрал следующее, подсказанное на другом форуме:
ВЫБРАТЬ Коэффициенты.Коэффициент, Контрагенты.Ссылка ИЗ Справочники.Коэффициенты КАК Коэффициенты Левое соединение Справочник.Контрагенты КАК Контрагенты ПО Коэффициенты.ГруппаКонтрагентов=Контрагенты.Родитель ГДЕ Контрагенты.ЭтоГруппа=ЛОЖЬ Не будет работать с вложенными группами, но в остальном под мои цели подходит. Всем спасибо за помощь. Удачи вам. |
|||
27
sda553
28.09.11
✎
07:47
|
(24) Пора бы тебе уже открыть тайну что (В ИЕРАРХИИ) не работает если ставить его в условие соединения
СОЕДИНЕНИЕ ПО |
|||
28
Ochkarito
28.09.11
✎
09:32
|
(26),(27) Хотя бы проверили как запрос отрабатывает, прежде чем что-то утверждать =)
|
|||
29
Gesperid10
28.09.11
✎
09:56
|
(28) сам-то проверил?
|
|||
30
Ochkarito
28.09.11
✎
09:58
|
(29) А что не так?
|
|||
31
Gesperid10
28.09.11
✎
10:00
|
вернёт все группы, а не текущей строки Коэффициенты, как ты ожидаешь |
|||
32
Segate
28.09.11
✎
10:02
|
Рекурсией, не проще?
|
|||
33
Ochkarito
28.09.11
✎
10:04
|
(31) Ага, все. Поэтому в (24) про оптимальность написал, если нужно по конкретной группе, то добавить условие
Коэффициенты.ГруппаКонтрагентов = &ГруппаКонтрагентов. Только в данном случае это подзапрос, проверяющий вхождение Контрагенты.Ссылка. |
|||
34
Gesperid10
28.09.11
✎
10:11
|
(33) тут дело не в оптимальности, у тебя каждый контрагент получит все коэффициенты
|
|||
35
Ochkarito
28.09.11
✎
10:16
|
(34)Ок
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |