Вход | Регистрация


Запрос с вложенным запросом

Запрос с вложенным запросом
Я
   ER1337
 
14.12.17 - 12:48
Друзья девелоперы, здравствуйте. Подскажите, пожалуйста, как решить такую проблему. Есть динамический список, есть произвольный запрос у нему:     
     список.ПроизвольныйЗапрос = Истина;
     Список.ТекстЗапроса = "ВЫБРАТЬ
    |Справочник_ПричиныПростояОборудования.Код,
    |Справочник_ПричиныПростояОборудования.Наименование,
    |ВложенныйЗапрос.Причина,
    |ВложенныйЗапрос.ПричинаСсылка
    |ИЗ
    |Справочник.ПричиныПростояОборудования КАК СправочникПричиныПростояОборудования
    |    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |        ВЫБОР 
    |            КОГДА КОЛИЧЕСТВО(ВходимостьВКТГ.Причина) > 1 ТОГДА ""Да""
        |                       ИНАЧЕ ""Нет""
    |        КОНЕЦ КАК Причина,
    |        
    |        ВходимостьВКТГ.Причина.Ссылка КАК ПричинаСсылка
    |    ИЗ
    |        РегистрСведений.ВходимостьВКТГ КАК ВходимостьВКТГ
    |    
    |    СГРУППИРОВАТЬ ПО
    |        ВходимостьВКТГ.Причина.Ссылка) КАК ВложенныйЗапрос
    |    ПО СправочникПричиныПростояОборудования.Ссылка = ВложенныйЗапрос.ПричинаСсылка";

Идея такая, есть справочник ПричиныПростоя, если по какой то записи, имеются записи в регистре ВходимостьВКТГ, то в колонку Причина должно выводится "Да", если нет записей, вывести "Нет". Однако, если записи есть, "Да" выводится, если записей нет, остается пустая ячейка, что не устраивает. Подскажите, пожалуйста, как сделать что бы и нет выводилось?

КОГДА КОЛИЧЕСТВО(ВходимостьВКТГ.Причина) > 1 ТОГДА ""Да""
КОГДА КОЛИЧЕСТВО(ВходимостьВКТГ.Причина) ЕСТЬ NULL ""Нет""

Так не работает
 
 
   vicof
 
1 - 14.12.17 - 12:50
ЕстьNULL(ВходимостьВКТГ.Причина, "Нет причины")
   ER1337
 
2 - 14.12.17 - 12:56
(1) Сделал так, теперь вообще ничего не выводит D:

    |Справочник_ПричиныПростояОборудования.Код,
    |Справочник_ПричиныПростояОборудования.Наименование,
    |ЕстьNULL(ВложенныйЗапрос.Причина, "Нет причины"),
    |ВложенныйЗапрос.ПричинаСсылка
   toypaul
 
3 - 14.12.17 - 12:58
не в подзапросе надо проверять, на верхнем уровне

select case t1.f is null then 'no' else 'yes' from t left jonn t1 on t.f=f1.f
   toypaul
 
4 - 14.12.17 - 12:58
t1 - подзапросом сгруппировать по f
   ER1337
 
5 - 14.12.17 - 13:07
(4)
ВЫБРАТЬ
    СправочникПричиныПростояОборудования.Код,
    СправочникПричиныПростояОборудования.Наименование,
    ВЫБОР    
       КОГДА ВложенныйЗапрос.Причина > 1 ТОГДА ""Да""
       ИНАЧЕ ""НЕТ""
    КОНЕЦ,
    ВложенныйЗапрос.ПричинаСсылка

Теперь столбец вообще пуст.

ВЫБРАТЬ
    СправочникПричиныПростояОборудования.Код,
    СправочникПричиныПростояОборудования.Наименование,
        ВложенныйЗапрос.Причина, 
    ВложенныйЗапрос.ПричинаСсылка

Если так, то выводит количество записей в регистре
   Borteg
 
6 - 14.12.17 - 13:10
(0)    КОГДА КОЛИЧЕСТВО(ВходимостьВКТГ.Причина) > 1 ТОГДА ""Да""
        |                       ИНАЧЕ ""Нет""
Когда нету причины то записи просто нету, тоесть даже количества нету
   Borteg
 
7 - 14.12.17 - 13:11
список.ПроизвольныйЗапрос = Истина;
     Список.ТекстЗапроса = "ВЫБРАТЬ
    |Справочник_ПричиныПростояОборудования.Код,
    |Справочник_ПричиныПростояОборудования.Наименование,
    |Выбор Когда ВложенныйЗапрос.Причина Есть Null тогда "Нет" Иначе "да",
    |ВложенныйЗапрос.ПричинаСсылка
    |ИЗ
    |Справочник.ПричиныПростояОборудования КАК СправочникПричиныПростояОборудования
    |    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |        ВЫБОР 
    |            КОГДА КОЛИЧЕСТВО(ВходимостьВКТГ.Причина) > 1 ТОГДА ""Да""
        |                       ИНАЧЕ ""Нет""
    |        КОНЕЦ КАК Причина,
    |        
    |        ВходимостьВКТГ.Причина.Ссылка КАК ПричинаСсылка
    |    ИЗ
    |        РегистрСведений.ВходимостьВКТГ КАК ВходимостьВКТГ
    |    
    |    СГРУППИРОВАТЬ ПО
    |        ВходимостьВКТГ.Причина.Ссылка) КАК ВложенныйЗапрос
    |    ПО СправочникПричиныПростояОборудования.Ссылка = ВложенныйЗапрос.ПричинаСсылка";
   Borteg
 
8 - 14.12.17 - 13:13
(0) КОЛИЧЕСТВО(ВходимостьВКТГ.Причина) =0  вприцнипе не может быть, там уже услвоие только на NULL надо проверять
   ER1337
 
9 - 14.12.17 - 13:20
(7) Так не работает
(8) Сделал вот как

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


Все равно не работает
   Borteg
 
10 - 14.12.17 - 13:28
(9)  ВложенныйЗапрос.Причина,  тебе вот это на null надо проверять
 
 Рекламное место пустует
   ER1337
 
11 - 14.12.17 - 13:32
(10)         
ВЫБРАТЬ
   СправочникПричиныПростояОборудования.Код,
   СправочникПричиныПростояОборудования.Наименование,
   ЕСТЬNULL (ВложенныйЗапрос.Причина, ""Нет""),
   ВложенныйЗапрос.ПричинаСсылка

Не работает
   Borteg
 
12 - 14.12.17 - 13:32
(9) ВЫБРАТЬ 
  СправочникПричиныПростояОборудования.Код, 
  СправочникПричиныПростояОборудования.Наименование, 
  ЕстьNull(ВложенныйЗапрос.Причина,"нет","Да"), 
  ВложенныйЗапрос.ПричинаСсылка 
ИЗ 
  Справочник.ПричиныПростояОборудования КАК СправочникПричиныПростояОборудования
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           КОЛИЧЕСТВО(ВходимостьВКТГ.Причина) КАК Причина,
           ВходимостьВКТГ.Причина.Ссылка КАК ПричинаСсылка
    ИЗ
  РегистрСведений.ВходимостьВКТГ КАК ВходимостьВКТГ
  
  СГРУППИРОВАТЬ ПО
  ВходимостьВКТГ.Причина.Ссылка) КАК ВложенныйЗапрос
  ПО СправочникПричиныПростояОборудования.Ссылка = ВложенныйЗапрос.ПричинаСсылка";
   ER1337
 
13 - 14.12.17 - 13:39
(12) Ну я же не совсем идиот)) Ну правда, так не работает, колонка становится вообще пустой.
   Borteg
 
14 - 14.12.17 - 13:44
(13) (9) ВЫБРАТЬ 
  СправочникПричиныПростояОборудования.Код, 
  СправочникПричиныПростояОборудования.Наименование, 
  ЕстьNull(ВложенныйЗапрос.ПричинаСсылка ,"нет","Да"), 
  ВложенныйЗапрос.ПричинаСсылка 
ИЗ 
  Справочник.ПричиныПростояОборудования КАК СправочникПричиныПростояОборудования
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           КОЛИЧЕСТВО(ВходимостьВКТГ.Причина) КАК Причина,
           ВходимостьВКТГ.Причина КАК ПричинаСсылка
    ИЗ
  РегистрСведений.ВходимостьВКТГ КАК ВходимостьВКТГ
  
  СГРУППИРОВАТЬ ПО
  ВходимостьВКТГ.Причина) КАК ВложенныйЗапрос
  ПО СправочникПричиныПростояОборудования.Ссылка = ВложенныйЗапрос.ПричинаСсылка";
   НЕА123
 
15 - 14.12.17 - 13:57
ЕСТЬNULL (ВложенныйЗапрос.Причина.Ссылка, ""Нет"")
   1Садовник
 
16 - 14.12.17 - 15:23
В основном запросе попробуй вместо "ВложенныйЗапрос.Причина":

ВЫБОР
КОГДА ЕСТЬNULL(ВложенныйЗапрос.Причина, 0) = 0
ТОГДА "НЕТ"
ИНАЧЕ "ДА"
КОНЕЦ КАК Причина
   ER1337
 
17 - 14.12.17 - 15:50
(16) О Великий!
Это работает, спасибо большое. +5 тысячей к карме. Теперь можно и чайку попить

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует