|
Проверка на NULL в запросе | ☑ | ||
---|---|---|---|---|
0
Dmitri446
30.11.17
✎
22:15
|
Помогите добавить проверки на null, не могу допереть как ее сделать, точнее что вместо null выводить если он есть
ВЫБРАТЬ | КонтактныеЛица.Владелец КАК Владелец, | ВЫБОР | КОГДА КонтактныеЛица.РабМесто <> ЗНАЧЕНИЕ(Справочник.РабочиеМеста.ПустаяСсылка) | ТОГДА КонтактныеЛица.РабМесто | ИНАЧЕ Сотрудники.РабочееМесто | КОНЕЦ КАК РабочееМесто |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица | ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники | ПО КонтактныеЛица.ФизЛицо = Сотрудники.ФизЛицо |ГДЕ | (Сотрудники.ФизЛицо.Ссылка = &Ссылка | ИЛИ КонтактныеЛица.ФизЛицо.Ссылка = &Ссылка) |
|||
1
hhhh
30.11.17
✎
22:22
|
(0) используй ЕСТЬNULL
|
|||
2
jsmith82
30.11.17
✎
22:26
|
ЕСТЬNULL(КонтактныеЛица.РабМесто, Сотрудники.РабочееМесто)
|
|||
3
Мисти
30.11.17
✎
23:19
|
Ну вот, как я знаю ответ - так и тут отвечают два сразу!
А как я не знаю ответ, так мне все объясняют, что я дура вместо ответа. |
|||
4
Лефмихалыч
30.11.17
✎
23:21
|
во-первых, "ПОЛНОЕ" замени на "ВНУТРЕННЕЕ"
во-вторых, в данном случае не может у тебя запрос NULL вернуть как раз потому, что соединение в любом случае внутреннее |
|||
5
Лефмихалыч
30.11.17
✎
23:22
|
(3) просто у вас вопрос скучный
|
|||
6
vi0
01.12.17
✎
05:46
|
(0) а что ты хочешь в результате?
какую задачу решаешь? |
|||
7
pasha_d
01.12.17
✎
10:16
|
хочешь Null - используй левое соединение
|
|||
8
dezss
01.12.17
✎
11:02
|
(7) с фига ли?
при полном как раз будут null`ы. |
|||
9
HEKPOH
01.12.17
✎
11:03
|
(8) и при полном, и при левом, и при правом
|
|||
10
Ненавижу 1С
гуру
01.12.17
✎
11:04
|
(9) иногда NULL бывает вообще в одной таблице без соединений
|
|||
11
Ц_У
01.12.17
✎
11:07
|
(3) переведу (5)
у вас профиль скучный :) |
|||
12
hhhh
01.12.17
✎
11:09
|
(8) имеется в виду, что при условии
|ГДЕ | (Сотрудники.ФизЛицо.Ссылка = &Ссылка | ИЛИ КонтактныеЛица.ФизЛицо.Ссылка = &Ссылка) не будет null |
|||
13
dezss
01.12.17
✎
11:13
|
(12) а если полное переписать на левое, то типа будут?)))
При таком условии будут null`ы, если в одном из справочников нет ссылки на это физ. лицо. |
|||
14
dezss
01.12.17
✎
11:15
|
(13) + кстати, КонтактныеЛица.Владелец тоже может быть null`ом)
|
|||
15
hhhh
01.12.17
✎
11:17
|
(13) null-ов не будет, они отбросятся при выполнении условия в ГДЕ. Об этом и говорит (4)
|
|||
16
Buster007
01.12.17
✎
11:19
|
(3) это потому, что у тебя фотки нет )
|
|||
17
dezss
01.12.17
✎
11:19
|
(15) и куда ж они отбросятся при соединении?
что будет в КонтактныеЛица.Владелец, если КонтактныеЛица.ФизЛицо.Ссылка = &Ссылка будет ложью? |
|||
18
Dmitrii
гуру
01.12.17
✎
11:21
|
(15) >> null-ов не будет, они отбросятся
Перечитай еще раз запрос. Ничего там не отбросится |
|||
19
hhhh
01.12.17
✎
11:21
|
(17) этой строчки вообще не будет, она не пройдет через ГДЕ
|
|||
20
hhhh
01.12.17
✎
11:22
|
(18) всё отбросится, это следует из аксиомы
Х ИЛИ NULL = ЛОЖЬ |
|||
21
dezss
01.12.17
✎
11:23
|
(19) т.е. ты хочешь сказать, что КонтактныеЛица.Владелец, который описан после ВЫБРАТЬ не будет присутствовать в результате запроса? О_о
мда...пятница, кому-то пора отдохнуть))) |
|||
22
dezss
01.12.17
✎
11:23
|
(20) е-мое....
т.е. ты хочешь сказать, что условие КонтактныеЛица.ФизЛицо.Ссылка = &Ссылка вернет Null? О_О |
|||
23
undertaker
01.12.17
✎
11:24
|
(11) а у Dmitri446 он не скучный? о_О
|
|||
24
dezss
01.12.17
✎
11:26
|
(23) ОФФ: он мужик...кто будет просить фотку у мужика)))
|
|||
25
Dmitrii
гуру
01.12.17
✎
11:27
|
(4) >> во-первых, "ПОЛНОЕ" замени на "ВНУТРЕННЕЕ"
Сильно сомневаюсь, что тут нужно ВНУТРЕННЕЕ соединение. Скорее всего, ЛЕВОЕ. Но оно не избавит от NULL. |
|||
26
dezss
01.12.17
✎
11:28
|
(25) а разве в постановке вопроса была задача избавиться от null`а?
вроде ж спросили только про проверку и в (1) и (2) получили ответ на вопрос |
|||
27
Dmitri446
01.12.17
✎
11:28
|
Переделал под левое, но с NULL до сих пор чет не врублюсь
ВЫБРАТЬ | ЕСТЬNULL(КонтактныеЛица.Владелец, ЗНАЧЕНИЕ(Справочник.ИТ_КонтактныеЛица.ПустаяСсылка)) КАК Владелец, | ВЫБОР | КОГДА КонтактныеЛица.РабМесто <> ЗНАЧЕНИЕ(Справочник.ИТ_РабочиеМеста.ПустаяСсылка) | ТОГДА КонтактныеЛица.РабМесто | ИНАЧЕ Сотрудники.РабочееМесто | КОНЕЦ КАК РабочееМесто |ИЗ | Справочник.ИТ_КонтактныеЛица КАК КонтактныеЛица | ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники | ПО КонтактныеЛица.ФизЛицо = Сотрудники.ФизЛицо |ГДЕ | Сотрудники.ФизЛицо.Ссылка = &Ссылка | И НЕ Сотрудники.ФизЛицо ЕСТЬ NULL | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | КонтактныеЛица.Владелец, | ВЫБОР | КОГДА КонтактныеЛица.РабМесто <> ЗНАЧЕНИЕ(Справочник.ИТ_РабочиеМеста.ПустаяСсылка) | ТОГДА КонтактныеЛица.РабМесто | ИНАЧЕ Сотрудники.РабочееМесто | КОНЕЦ |ИЗ | Справочник.ИТ_КонтактныеЛица КАК КонтактныеЛица | ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники | ПО КонтактныеЛица.ФизЛицо = Сотрудники.ФизЛицо |ГДЕ | КонтактныеЛица.ФизЛицо.Ссылка = &Ссылка | И НЕ Сотрудники.ФизЛицо ЕСТЬ NULL |
|||
28
dezss
01.12.17
✎
11:30
|
(27) в чем конкретно косяк?
какие тебя не устраивают данные? |
|||
29
Dmitrii
гуру
01.12.17
✎
11:32
|
(27) >> Переделал под левое
Где? В запросе везде ПОЛНОЕ. У тебя каша в голове. Скажу уже наконец - что тебе именно надо. |
|||
30
hhhh
01.12.17
✎
11:32
|
(27) так может
|ГДЕ | Сотрудники.ФизЛицо.Ссылка = &Ссылка | И НЕ КонтактныеЛица.ФизЛицо ЕСТЬ NULL |
|||
31
Ненавижу 1С
гуру
01.12.17
✎
11:33
|
(27)
Сотрудники.ФизЛицо.Ссылка = &Ссылка И НЕ Сотрудники.ФизЛицо ЕСТЬ NULL это ПЯТНИЦА! |
|||
32
Dmitri446
01.12.17
✎
11:33
|
Не тот код скинул...
В общем мне нужно при выборе физ лица если у него есть контактное лицо выбрать раб место контактного лица, если контактного лица нету то выбрать рабочее место сотрудника и наоборот |
|||
33
Ц_У
01.12.17
✎
11:34
|
(23) от пола зависит
|
|||
34
Dmitri446
01.12.17
✎
11:34
|
ВЫБРАТЬ
КонтактныеЛица.Владелец, ВЫБОР КОГДА КонтактныеЛица.РабМесто <> ЗНАЧЕНИЕ(Справочник.ИТ_РабочиеМеста.ПустаяСсылка) ТОГДА КонтактныеЛица.РабМесто ИНАЧЕ Сотрудники.РабочееМесто КОНЕЦ КАК РабочееМесто ИЗ Справочник.ИТ_КонтактныеЛица КАК КонтактныеЛица ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники ПО КонтактныеЛица.ФизЛицо = Сотрудники.ФизЛицо ГДЕ Сотрудники.ФизЛицо.Ссылка = &Ссылка И НЕ Сотрудники.ФизЛицо ЕСТЬ NULL ОБЪЕДИНИТЬ ВЫБРАТЬ КонтактныеЛица.Владелец, ВЫБОР КОГДА КонтактныеЛица.РабМесто <> ЗНАЧЕНИЕ(Справочник.ИТ_РабочиеМеста.ПустаяСсылка) ТОГДА КонтактныеЛица.РабМесто ИНАЧЕ Сотрудники.РабочееМесто КОНЕЦ ИЗ Справочник.ИТ_КонтактныеЛица КАК КонтактныеЛица ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники ПО КонтактныеЛица.ФизЛицо = Сотрудники.ФизЛицо ГДЕ КонтактныеЛица.ФизЛицо.Ссылка = &Ссылка И НЕ Сотрудники.ФизЛицо ЕСТЬ NULL |
|||
35
hhhh
01.12.17
✎
11:35
|
(29) условие в ГДЕ
|ГДЕ | (Сотрудники.ФизЛицо.Ссылка = &Ссылка вревращает ПОЛНОЕ СОЕДИНЕНИЕ в ЛЕВОЕ идем дальше, вторая строчка | ИЛИ КонтактныеЛица.ФизЛицо.Ссылка = &Ссылка) превращает ЛЕВОЕ СОЕДИНЕНИЕ во ВНУТРЕННЕЕ. то есть в запросе (0) фактически внутреннее соединение ???? |
|||
36
dezss
01.12.17
✎
11:42
|
(35) Не совсем так. Не забывай, тут ИЛИ, а не И. Если было бы И, то ты был бы прав.
Вместо ВЫБОР КОГДА КонтактныеЛица.РабМесто <> ЗНАЧЕНИЕ(Справочник.ИТ_РабочиеМеста.ПустаяСсылка) ТОГДА КонтактныеЛица.РабМесто ИНАЧЕ Сотрудники.РабочееМесто КОНЕЦ Напиши ЕстьNull(КонтактныеЛица.РабМесто,Сотрудники.РабочееМесто). Но если оба будут null, то тут тоже будет null. И, кстати ЗНАЧЕНИЕ(Справочник.ИТ_РабочиеМеста.ПустаяСсылка) <> Null, запомни это очень хорошо!!! |
|||
37
dezss
01.12.17
✎
11:44
|
(36) Вторая часть, которая после "Вместо..." для (34)
|
|||
38
Dmitrii
гуру
01.12.17
✎
11:45
|
(35) Если бы тыл прав, то проблемы в (0) не было бы.
А если вникнуть в текст условия ГДЕ, то ты увидишь там "ИЛИ". То есть никакого превращение во ВНУТРЕННЕЕ соединение не произойдёт. |
|||
39
dezss
01.12.17
✎
11:47
|
(0) Блин, проще написать, чем объяснить ТС-у...может сам разберется)))
|ВЫБРАТЬ | ЕСТЬNULL(КонтактныеЛица.Владелец, ЗНАЧЕНИЕ(Справочник.ИТ_КонтактныеЛица.ПустаяСсылка)) КАК Владелец, | ЕстьNull(КонтактныеЛица.РабМесто,Сотрудники.РабочееМесто) КАК РабочееМесто |ИЗ | Справочник.ИТ_КонтактныеЛица КАК КонтактныеЛица | ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники | ПО КонтактныеЛица.ФизЛицо = Сотрудники.ФизЛицо |ГДЕ | Сотрудники.ФизЛицо.Ссылка = &Ссылка | ИЛИ КонтактныеЛица.ФизЛицо.Ссылка = &Ссылка |
|||
40
MaxS
01.12.17
✎
12:09
|
Зачем нужны эти ФизЛицо.Ссылка = &Ссылка ?
почему не ФизЛицо = &Ссылка ? |
|||
41
dezss
01.12.17
✎
12:13
|
(40) нафиг не нужны...я просто копипастил из запроса тс
|
|||
42
Мимохожий Однако
01.12.17
✎
12:20
|
(3) ОФФ: Правда матку режет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |