AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.04.2015, 12:28   #1  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
все равно нужна помощь к сожалению.

while select Apole
from a
outer join Bpole
from B
where B.RelationPole == A.RelationPole
join CPole
from C
where C.RelationQQQ == A.RelationQQQ &&
C.RelationTTT== isnull (B.RelationTTT , 0 )

Как в данном случае sql-кий isnull заменить ?
Старый 24.04.2015, 13:19   #2  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Цитата:
Сообщение от trudel Посмотреть сообщение
все равно нужна помощь к сожалению.

while select Apole
from a
outer join Bpole
from B
where B.RelationPole == A.RelationPole
join CPole
from C
where C.RelationQQQ == A.RelationQQQ &&
C.RelationTTT== isnull (B.RelationTTT , 0 )

Как в данном случае sql-кий isnull заменить ?
По моему, у таблиц созданных из DAX, значения null выключены.
Старый 24.04.2015, 13:54   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от maldini Посмотреть сообщение
По моему, у таблиц созданных из DAX, значения null выключены.
В таблицах и нет NULL'ов
В запросе для C выбирается запись с "нулевым релейшеном", если для A нет связи с B
__________________
Axapta v.3.0 sp5 kr2
Старый 24.04.2015, 13:51   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от trudel Посмотреть сообщение
все равно нужна помощь к сожалению.

while select Apole
from a
outer join Bpole
from B
where B.RelationPole == A.RelationPole
join CPole
from C
where C.RelationQQQ == A.RelationQQQ &&
C.RelationTTT== isnull (B.RelationTTT , 0 )

Как в данном случае sql-кий isnull заменить ?
А версия Аксапты какая?
Если 2012-я, то можно разрулить при помощи вьюх
__________________
Axapta v.3.0 sp5 kr2
Старый 24.04.2015, 14:00   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от trudel Посмотреть сообщение
все равно нужна помощь к сожалению.

while select Apole
from a
outer join Bpole
from B
where B.RelationPole == A.RelationPole
join CPole
from C
where C.RelationQQQ == A.RelationQQQ &&
C.RelationTTT== isnull (B.RelationTTT , 0 )

Как в данном случае sql-кий isnull заменить ?
notexists join
__________________
Возможно сделать все. Вопрос времени
Старый 24.04.2015, 14:06   #6  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
NotExists как тут поможет? мне наоборот надо, чтобы запись в С искалась. либо поле из B берется Для ограничения выбора, либо если не нашлось B для A, то берется 0.

А view здесь как ?
Старый 24.04.2015, 14:19   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от trudel Посмотреть сообщение
А view здесь как ?
В 2012-й можно во вьюхе создать Computed Column, в котором указать для расчета функцию IsNull()

Т.е. создать вью на основании соединения таблиц A и B и в запросе использовать эту вьюху. Условие для С будет

X++:
while select view
join C
where C.RelationQQQ == view.RelationQQQ &&
C.RelationTTT == view.ComputedColumn
__________________
Axapta v.3.0 sp5 kr2
Старый 24.04.2015, 14:26   #8  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
notexists join
Цитата:
Сообщение от trudel Посмотреть сообщение
NotExists как тут поможет? мне наоборот надо, чтобы запись в С искалась. либо поле из B берется Для ограничения выбора, либо если не нашлось B для A, то берется 0.

А view здесь как ?
Сорри, я невнимательно вчитался.
Но тогда неясен запрос. Если таблица B связывается с C по INNER JOIN - то тогда какие могут быть NULL-ы?
NULL-ов в АХ нет.
Они могут образовываться только от LEFT OUTER JOIN, но именно эти записи отбираются notexists join-ом
__________________
Возможно сделать все. Вопрос времени
Старый 24.04.2015, 15:00   #9  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
Все крутится в отчете и запрос еще соединения содержит, не очень удобно. Нельзя в коде через какой-нибудь == (case B.PoleTTT isnull '' default B.PoleTTT ) ?

а вот так понятнее или только усугубит: таблица A с прицепами для автомобилей. К ней привязана таблица B с автомобилями, именно в таблице B указан параметр определяющий стоимость из таблицы С для прицепа из А. В таблице С ищем стоимость- мы нашли наш прицеп в ней, но необходимо еще учесть параметр из B. Если автомобиль к прицепу не привязали, то берем по нашему прицепу по умолчанию параметр "оранжевый" и стоимость для него.
Старый 24.04.2015, 15:15   #10  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от trudel Посмотреть сообщение
Все крутится в отчете и запрос еще соединения содержит, не очень удобно. Нельзя в коде через какой-нибудь == (case B.PoleTTT isnull '' default B.PoleTTT ) ?

а вот так понятнее или только усугубит: таблица A с прицепами для автомобилей. К ней привязана таблица B с автомобилями, именно в таблице B указан параметр определяющий стоимость из таблицы С для прицепа из А. В таблице С ищем стоимость- мы нашли наш прицеп в ней, но необходимо еще учесть параметр из B. Если автомобиль к прицепу не привязали, то берем по нашему прицепу по умолчанию параметр "оранжевый" и стоимость для него.
Сумбурно конечно ... Такие вещи обычно бьются на 2 запроса. Это и шустрее и лечге потом правится и удобнее для многопользовательской БД.
Поэтому по сути - наверное с ходу не подскажу другой идеи, кроме как разбить запросы.
__________________
Возможно сделать все. Вопрос времени
Старый 24.04.2015, 15:31   #11  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
ну не может быть, чтобы у такой простой задачи не было простого решения...
== (case B.PoleTTT isnull '' default B.PoleTTT ) ?..
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Множественные запросы по DataArea и VirtualDataAreaList Dreadlock DAX: Программирование 11 24.07.2012 11:43
Открытая сумма по счету-фактуре - как правильно вычислить? IKA DAX: Программирование 7 21.03.2011 19:46
Запросы / Итоги для ЗПР Prophetic DAX: Программирование 5 02.08.2010 15:13
оптимизируем запросы. SHiSHok DAX: Программирование 18 13.09.2009 21:26
Запросы в Аксапта ibc DAX: Программирование 5 08.08.2005 22:47

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:22.