Имя: Пароль:
1C
 
Как запросом получит самые нижние и самый верхний соотв. уровень в справочнике
0 mista2009
 
01.06.09
06:50
Справочник Проекты, иерархия элементов.

Надо получить таблицу из двух колонок

Самые верхние|Самые нижние


Вот почти работающий вариант (нагородил портянку)

ВЫБРАТЬ
   СамыеВерхние.Ссылка КАК Верхние,
   СамыеНижние.Ссылка КАК Нижние
ИЗ
   (ВЫБРАТЬ
       Проекты.Ссылка КАК Ссылка
   ИЗ
       Справочник.Проекты КАК Проекты
   ГДЕ
       Проекты.Родитель = ЗНАЧЕНИЕ(Справочник.Проекты.ПустаяСсылка)) КАК СамыеВерхние
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
           Проекты.Ссылка КАК Ссылка,
           Проекты.Родитель КАК Родитель
       ИЗ
           Справочник.Проекты КАК Проекты
       ГДЕ
           (НЕ Проекты.Ссылка В
                       (ВЫБРАТЬ РАЗЛИЧНЫЕ
                           Проекты.Родитель
                       ИЗ
                           Справочник.Проекты КАК Проекты))) КАК СамыеНижние
       ПО (СамыеНижние.Родитель = СамыеВерхние.Ссылка
               ИЛИ СамыеНижние.Родитель.Родитель = СамыеВерхние.Ссылка
               ИЛИ СамыеНижние.Родитель.Родитель.Родитель = СамыеВерхние.Ссылка
               ИЛИ СамыеНижние.Родитель.Родитель.Родитель.Родитель = СамыеВерхние.Ссылка)
1 mista2009
 
01.06.09
06:52
Самый верхний может быть и нижним - это как раз и не получается. А так вроде работает.
2 Feanor
 
01.06.09
06:56
Один момент тока портит все: глубина справочника может быть неограничена.
3 Shurjk
 
01.06.09
06:56
(2) Ага так что лушче обойтись без запросов.
4 mista2009
 
01.06.09
06:57
Да запрос кривой. Это я так для примера. Можно его вообще по другому построить.
5 mista2009
 
01.06.09
06:58
(3) Запросом очень желательно, т.к. нужен для связи с другими запросами.
6 Feanor
 
01.06.09
07:02
Интересно, йа задумалсо ))

З.Ы. ай=йа. английский не такой уж и далекий язык от русского)))))))
7 ZanderZ
 
01.06.09
07:24
ВЫБРАТЬ //САМЫЕ ВВЕРХНИЕ
   Проекты.Ссылка
ИЗ
   Справочник.ПроектыКАК Проекты
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПроектыКАК Проекты1
       ПО Проекты.Родитель = Проекты1.Ссылка
ГДЕ
   Проекты.Ссылка ЕСТЬ NULL

ОБЪЕДИНИТЬ

ВЫБРАТЬ //САМЫЕ НИЖНИЕ
   Проекты.Ссылка
ИЗ
   Справочник.ПроектыКАК Проекты
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Проекты КАК Проекты1
       ПО Проекты.Ссылка = Проекты1.Родитель
ГДЕ
   Проекты1.Ссылка ЕСТЬ NULL
8 ZanderZ
 
01.06.09
07:24
в первом заменить

  Проекты.Сылка ЕСТЬ NULL на

  Проекты1.Ссылка ЕСТЬ NULL
9 mista2009
 
01.06.09
08:47
(7) Что-то не то. Надо две колонки.
10 mista2009
 
01.06.09
10:00
апну
11 mista2009
 
01.06.09
10:16
Вроде сделал, но очень уж громоздко. Плохо пока у меня с запросами

ВЫБРАТЬ
   Верхние.Ссылка КАК Верхние,
   Нижние.Ссылка КАК Нижние
ИЗ
   (ВЫБРАТЬ
       Проекты.Ссылка КАК Ссылка
   ИЗ
       Справочник.Проекты КАК Проекты
   ГДЕ
       Проекты.Родитель = ЗНАЧЕНИЕ(Справочник.Проекты.ПустаяСсылка)) КАК Верхние
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
           Проекты.Ссылка КАК Ссылка,
           Проекты.Родитель КАК Родитель
       ИЗ
           Справочник.Проекты КАК Проекты
       ГДЕ
           (НЕ Проекты.Ссылка В
                       (ВЫБРАТЬ РАЗЛИЧНЫЕ
                           Проекты.Родитель
                       ИЗ
                           Справочник.Проекты КАК Проекты))) КАК Нижние
       ПО (Нижние.Родитель = Верхние.Ссылка
               ИЛИ Нижние.Родитель.Родитель = Верхние.Ссылка
               ИЛИ Нижние.Родитель.Родитель.Родитель = Верхние.Ссылка
               ИЛИ Нижние.Родитель.Родитель.Родитель.Родитель = Верхние.Ссылка)

СГРУППИРОВАТЬ ПО
   Верхние.Ссылка,
   Нижние.Ссылка

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

ВЫБРАТЬ
   Проекты.Ссылка,
   Проекты.Ссылка
ИЗ
   Справочник.Проекты КАК Проекты
ГДЕ
   (НЕ Проекты.Ссылка В
               (ВЫБРАТЬ
                   Проекты.Родитель
               ИЗ
                   Справочник.Проекты КАК Проекты))
   И Проекты.Родитель = ЗНАЧЕНИЕ(Справочник.Проекты.ПустаяСсылка)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.