direct sql inner join, left join

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
mwoland

direct sql inner join, left join

Сообщение mwoland »

Задача: с помощью direct sql вытащить ДО и их внешние атрибуты. Есть запрос вида

Код: Выделить всё

sql select bd.nodoc, av.vstring
from basedoc bd 
join attrval av on 1102 = av.wtable and bd.nrec = av.crec and #comp(0001000000000ECh) = av.cattrnam ;
Запрос работает, но выводит только те ДО, у которых указан необходимый внешний атрибут. Чтобы выводились ДО и с установленным атрибутом и без него вместо join использую left join. Запрос выводит все ДО, но отображает пустые значения в av.vstring (во всех строках. даже там, где значение внешнего атрибута есть). Помогите плз, может я не понимаю механизма действия left join? Вроде всегда в таком ключе его использовал, а сейчас затык.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: direct sql inner join, left join

Сообщение Masygreen »

Код: Выделить всё

left outer jon 
?
Время ведет!
mwoland

Re: direct sql inner join, left join

Сообщение mwoland »

Masygreen писал(а):

Код: Выделить всё

left outer jon 
?
пробовал - то же самое, что и left join
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: direct sql inner join, left join

Сообщение Den »

Вам поможет COALESCE
mwoland

Re: direct sql inner join, left join

Сообщение mwoland »

Всё. Разобрался. "Правильный" код:

Код: Выделить всё

sql select bd.nodoc, CASE WHEN av.vstring IS NULL THEN '' ELSE av.vstring END
from basedoc bd 
left join attrval av on 1102 = av.wtable and bd.nrec = av.crec and #comp(0001000000000ECh) = av.cattrnam ;
Т.е. ошибка была в отображении колонки. Это ****, господа. И ради этой фигни я убил сегодня кучу времени. Печаль и ненависть. Тему можно закрывать.
mwoland

Re: direct sql inner join, left join

Сообщение mwoland »

Den писал(а):Вам поможет COALESCE
Да, вы правы COALESCE действительно поможет. Спасибо.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: direct sql inner join, left join

Сообщение Den »

уже тут обсуждали просто где то эту "фичу" dsql
Ответить