|   |   | 
| 
 | как написать такой запрос? | ☑ | ||
|---|---|---|---|---|
| 0
    
        dreamoff 25.06.13✎ 12:23 | 
        необходимо объединить 2 таблицы через левое соединение.как добавить определенное значение,если в одной таблице нет значения.надеюсь понятно объяснил)
  вот такой запросик ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ СправочникКартыПДС.Ссылка, СправочникКартыПДС.Код, СправочникКартыПДС.Наименование, ВЫБОР КОГДА ВыданныеКарты.КартаПДС.ЭтоГруппа = ЛОЖЬ ТОГДА ВЫБОР КОГДА ВыданныеКарты.Количество = 1 ТОГДА "Активна" ИНАЧЕ "Неактивна" КОНЕЦ ИНАЧЕ "" КОНЕЦ КАК Статус ИЗ Справочник.КартыПДС КАК СправочникКартыПДС ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыданныеКарты КАК ВыданныеКарты ПО СправочникКартыПДС.Ссылка = ВыданныеКарты.КартаПДС если в регистре нет значение,а справочнике есть,то нужно ставить статус "неактивен".подскажите,как это сделать? | |||
| 1
    
        mikecool 25.06.13✎ 12:24 | 
        ЕстьNULL(Значение из регистра, Неактивен)     | |||
| 2
    
        salvator 25.06.13✎ 12:25 | 
        А чем текущий запрос не устраивает?     | |||
| 3
    
        lamesnake 25.06.13✎ 12:26 | 
        ВЫБОР
  КОГДА ВыданныеКарты.КартаПДС ЕстьNULL Тогда Неактивна" Иначе КОГДА ВыданныеКарты.КартаПДС.ЭтоГруппа = ЛОЖЬ ТОГДА ВЫБОР КОГДА ВыданныеКарты.Количество = 1 ТОГДА "Активна" ИНАЧЕ "Неактивна" КОНЕЦ ИНАЧЕ "" КОНЕЦ КАК Статус | |||
| 4
    
        fisher 25.06.13✎ 12:26 | 
        Или так:
  ВЫБОР КОГДА ВыданныеКарты.КартаПДС ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК Активность | |||
| 5
    
        fisher 25.06.13✎ 12:32 | 
        Вообще, плохо прямо в выборке формировать строковые представления. Как минимум потому, что это увеличивает размер выборки. Лучше это делать в выражениях представлений полей, а сами значения полей по возможности сводить к примитивным типам.     | |||
| 6
    
        dreamoff 25.06.13✎ 12:35 | 
        (2)а он не ставит неактивный,если нет значения в регистре     | |||
| 7
    
        dreamoff 25.06.13✎ 12:36 | 
        (5) а можно подробней и с примером,если несложно)     | |||
| 8
    
        GANR 25.06.13✎ 12:36 | 
        (0) Принцип один: надо исходить из предположения, что если в присоединенной справа таблице нет записей, соответствующих условию соединения, то функция is null вернет ИСТИНА 
  ВЫБОР КОГДА ПраваяТаблица.ТвоеПоле is null ТОГДА ""нет строки по условию соединения в таблице справа"" ИНАЧЕ ""есть строка по условию соединения в таблице справа"" КОНЕЦ Если нужно в случае присутствия записи вернуть значение некого поля, а в случае отсутствия - некое предопределенное значение, параметр или какое-то поле из левой таблицы - тогда проще всего будет воспользоваться ЕСТЬNULL(ПраваяТаблица.ТвоеПоле, ЧтоТоТам) Примечание! ПраваяТаблица.ТвоеПоле = NULL - неверная конструкция. | |||
| 9
    
        kimba 25.06.13✎ 12:38 | 
        КОГДА Не ВыданныеКарты.КартаПДС.ЭтоГруппа
  ТОГДА ВЫБОР КОГДА ВыданныеКарты.Количество > 0 ИЛИ ВыданныеКарты.КартаПДС ЕСТЬ NULL ТОГДА "Активна" ИНАЧЕ "Неактивна" КОНЕЦ ИНАЧЕ "" КОНЕЦ КАК Статус | |||
| 10
    
        kimba 25.06.13✎ 12:38 | 
        (9) Перепутал немного, ну ты понял...     | |||
| 11
    
        fisher 25.06.13✎ 12:39 | 
        (7) Пример в (4). А в выражении представления можно написать
  ВЫБОР КОГДА Активность ТОГДА "Активна" ИНАЧЕ "Неактивна" КОНЕЦ | |||
| 12
    
        fisher 25.06.13✎ 12:44 | 
        Блин. Я почему-то подумал, что речь об СКД.     | |||
| 13
    
        dreamoff 25.06.13✎ 12:45 | 
        это для динамического списка     | |||
| 14
    
        fisher 25.06.13✎ 12:49 | 
        (13) Управляемая форма или обычная?     | |||
| 15
    
        dreamoff 25.06.13✎ 12:49 | 
        управляемая     | |||
| 16
    
        fisher 25.06.13✎ 12:55 | 
        (15) Тогда нужные представления можно через условное оформление формировать.
  Но ключевой ответ по сабжу тебе уже несколько раз дали. Если значения в левом соединении нет, то оно NULL. А на NULL проверяют только специальными функциями. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |