А скажите как правильно задействовать проверку на NULL?

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

понимаешь в том то и дело что запрос

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

SELECT 
   Coalesce((SELECT vv.value FROM lsdbo.attrib_value_view av, lsdbo.value_string_view vv 
                 WHERE av.value_id = vv.id AND av.object_id = rw.id AND av.attrib_id = 3000000000002),'')
 FROM lsdbo.object_reference_view rw,lsdbo.object_type_view    
WHERE (rw.type_id = lsdbo.object_type_view.id) and (rw.id =4000000015666)
в QA выдает ошибку
Server: Msg 8624, Level 16, State 21, Line 1
Internal SQL Server error.

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

to Disillusioned
а что за функция GetStrValue откуда она, я уже весь дымлюсь :wink: :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

Да сам напиши ее и назови как хочешь. Внутри функции выборка значения + если значение IS NULL то присвоение значения по умолчанию.
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

на хп чтоль-да ну ее нафиг... из за такой мелочи..., тут хочу разобраться- в стандартной функции ms sql? Кстати а ведь есть же такая функция у самой Лоции - осталось поискать ее, ну хотя это тоже не совсем то

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

Тогда может лучше на SQL.RU?
Если выборка значений атрибута мелочь, то что тогда в Лоции не мелочь? Ту же самую функцию можно и в ХП использовать, да и работать с функциями удобнее хотя бы из-за компактности записи (особенно в редакторе действий).
Хотя, конечно, дело вкуса...
Что касается поиска функции Лоции, уверен, он займет больше времени, чем написание собственной...
Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Сообщение Юрий »

перепишы запрос в следующем виде и все будет Ок!

SELECT Coalesce(vv.value,'')+' '+Coalesce(vv1.value,'')
FROM lsdbo.object_reference_view rw
left join lsdbo.object_type_view ot on rw.type_id = ot.id
-- первый атрибут
left join lsdbo.attrib_value_view av on rw.id = av.object_id and av.attrib_id = 3000000000002
left join lsdbo.value_string_view vv on av.value_id = vv.id and av.attrib_id = 3000000000002
-- сдедующий атрибут
left join lsdbo.attrib_value_view av1 on rw.id = av1.object_id and av1.attrib_id = 3000000000001
left join lsdbo.value_string_view vv1 on av1.value_id = vv1.id and av1.attrib_id = 3000000000001
where rw.id=100001101830067
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Да все Ок :wink: :wink:
а скажи - если знаешь... в чем могло быть дело - почему эта функция не работает с простым синтаксисом Лоции - а только с объединениями в стиле microsoft?? точнее не так... почему работает с переменными а с прямыми запросами нет - нигде в документации ничего похожего не нашел (мы используем в этом филиале MSSQL2000 SP4)

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Сообщение Юрий »

Почему в стиле Microsoft??? Кто тебе такую ерунду сказал.
Объясню почему я использую join - при таком синтаксисе SQL активно использует индексы и выбирает оптимально данные.
А в этом стиле я писал не только на MSSQL я пришел к такому написанию после программирования отчетов и интерфейсов для системы "Галактика". Причем стояла она не на MSSQL.
И была такая-же проблема с быстродействием пришлось попотеть.
И кстати мне помог их трактат(разработчиков "Галактики") по оптимизации работы с базой.

Да у Лоции очень незатейливый синтаксис, отсюда и скорость. :)
Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Сообщение Юрий »

Да совсем забыл - при таком написании у тебя не будет в MSSQL ограничения на 10 атрибутов.
Аватара пользователя
Александр
Активный участник
Сообщения: 1658
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Все мои познания в SQL ограничиваются книжкой для хакеров по Transact-SQL :wink: , к сожалению мыслить множествами до сих пор не получается также как и при переходе на ООП в свое время, - нужно чтобы в голове все перевернулось в очередной раз :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Сообщение Юрий »

У меня примерно 1.5 года пошло на то что-бы все это в голове осело и я разобрался более менее как делать быстрые запросы.
Причем занимался все это время только запросами.
И то постоянно узнаю чтонибудь новенькое! :D
Ответить