|
как написать такой запрос? | ☑ | ||
---|---|---|---|---|
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 проверяют только специальными функциями. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |