Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> is null в case when или join по null/not null полю 
:(
    Опции темы
Enflout
Дата 11.5.2011, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 22.5.2004

Репутация: нет
Всего: 6



Всем добра smile 

Код

select p.id
from estimate p
left join (
  ...
) inp on inp.affiliation_id = t1.affiliation_id 

and inp.service_id = 
case when (inp.service_id is not null) 
then p.service_id else null end


В зависимости от значения поля service_id (null/not null) конкретной записи нужно добавить в условие джойна еще одно поле, по которому джойним. Но "else null" в итоге приводит к inp.service_id = null и, соответственно, совсем другому результату.
Так, разумеется, тоже не работает:
Код

case when (inp.service_id is not null) 
then p.service_id else is null end


Была такая мысль: мол, если inp.service_id есть null, то все нормально, трогать не надо, а если нет, то работаем:
Код

/* join */
where 
(inp.service_id is null)
or
(inp.service_id is not null and inp.service_id = p.service_id)


Ситуация-то банальная, как такие вещи обычно пишутся?.. Можно без кода, нужна идея smile 

Firebird 1.5, Oracle - желательно, чтобы получился один код на двоих.
PM MAIL   Вверх
Zloxa
Дата 11.5.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Enflout @  11.5.2011,  20:13 Найти цитируемый пост)
совсем другому результату

А можно узнать каков "тот самый" результат? А то приводимые вами примеры не удовлетворяющего вас кода ну ни как не позволяют понять что вам нужно.
Цитата(Enflout @  11.5.2011,  20:13 Найти цитируемый пост)
where 
(inp.service_id is null)
or
(inp.service_id is not null and inp.service_id = p.service_id)

это оптимизируется до
Код

inp.service_id = p.service_id or inp.service_id is null



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0597 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.