Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Группировки в запросе (число прочтений - 1565 )
skelaKuban
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 06. Октября 2011
Группировки в запросе
07. Октября 2011 :: 08:52
Печать  
Есть запрос
ТекстЗапроса = "
     |SELECT НоменклатураАналог.id [Аналог $Справочник.Номенклатура]
     |, Max(Номенклатура.DESCR) МаксимумНаименование
     |FROM $Справочник.Номенклатура AS Номенклатура With (NOLOCK)
     |INNER JOIN $Справочник.Номенклатура AS НоменклатураАналог With (NOLOCK) ON Номенклатура.ID = $НоменклатураАналог.Аналог
     |and Номенклатура.ID <> НоменклатураАналог.ID
     |GROUP BY НоменклатураАналог.id
     |";
Результат запроса выводится в 2-х колонка, хотелось бы сделать обход группировок, как это можно сделать ?
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Группировки в запросе
Ответ #1 - 07. Октября 2011 :: 09:33
Печать  
какой вопрос, такой ответ:

тзЗапрос = ЗапросСКЛ.ВыполнитьИнструкцию(ТекстЗапроса);

тзЗапрос.ВыбратьСтроки();
Пока тзЗапрос.ПолучитьСтроку() = 1 Цикл
....
КонецЦикла;

Смех


Ежели ты имел в виду "обход по группам справочника" - то ты так и пиши.
  
Наверх
 
IP записан
 
skelaKuban
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 06. Октября 2011
Re: Группировки в запросе
Ответ #2 - 07. Октября 2011 :: 09:39
Печать  
Извиняюсь за информатичность.  Фишка в том, что у на один аналог может ссылаться несколько наименований и я хочу затем все выгрузить в объект "дерево + таблица"
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Группировки в запросе
Ответ #3 - 07. Октября 2011 :: 10:00
Печать  
Для начала - твой запрос отберет ровно одно наименование для аналога.

Далее - я нифига не помню, таблицу какой структуры требует объект "Дерево+таблица" (последний раз я с ним работал фиг знает когда - и не уверен, что именно с тем объектом, который используешь ты)
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Группировки в запросе
Ответ #4 - 07. Октября 2011 :: 10:22
Печать  
Если Формексовский объект, то варианта 2:

Твой запрос формирует ТЗ дерева первого уровня.
циклом по этой ТЗ выполняешь запрос в духе
ТекстЗапроса = "
     |SELECT Номенклатура.DESCR Наименование
     |FROM $Справочник.Номенклатура AS Номенклатура With (NOLOCK)
     |INNER JOIN $Справочник.Номенклатура AS НоменклатураАналог With (NOLOCK) ON Номенклатура.ID = $НоменклатураАналог.Аналог
     |and Номенклатура.ID <> НоменклатураАналог.ID
     |Where НоменклатураАналог.id = :Аналог
     |GROUP BY НоменклатураАналог.id
     |";
и этим данными заполняешь второй уровень ТЗ дерева.

вариант второй:
выполняешь такой запрос
ТекстЗапроса = "
     |SELECT НоменклатураАналог.id [Аналог $Справочник.Номенклатура]
     |, Номенклатура.DESCR Наименование
     |FROM $Справочник.Номенклатура AS Номенклатура With (NOLOCK)
     |INNER JOIN $Справочник.Номенклатура AS НоменклатураАналог With (NOLOCK) ON Номенклатура.ID = $НоменклатураАналог.Аналог
     |and Номенклатура.ID <> НоменклатураАналог.ID
     |Order BY НоменклатураАналог.id
     |";

Идешь по получившейся ТЗ, в цикле отслеживаешь изменение Аналога.
При изменении Аналога создаешь новую строку в ТЗ дерева первого уровня, накопленную ТЗ с именами записываешь в строку ТЗ.
  
Наверх
 
IP записан
 
skelaKuban
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 06. Октября 2011
Re: Группировки в запросе
Ответ #5 - 07. Октября 2011 :: 10:28
Печать  
Спасибо, про 2 вариант я догадался, первый мне кажется интереснее, сейчас проверю
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать