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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.01.2013, 14:11   #1  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Странное поведение запроса
Имеется запрос (tab2 - это вьюха):
X++:
SELECT tab1
        where tab1.RecId == 5637243234
        OUTER JOIN tab2
            WHERE tab1.Draft == tab2.Draft
                  && tab1.Account == tab2.Account
в результате работы данного запроса данные из tab2 не выбираются.
Но если включить трассировку запросов и перехватить SQL запрос и выполнить его непосредственно в MS SQL Server - то данные из tab2 нормально выбираются.
Почему такое может быть?
Старый 09.01.2013, 15:01   #2  
imir is offline
imir
Участник
 
159 / 161 (6) ++++++
Регистрация: 28.05.2010
Синхронизация, реиндексация, обновление статистики?
Старый 09.01.2013, 15:11   #3  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
не помогает
Старый 09.01.2013, 15:30   #4  
Evgeniy2020 is offline
Evgeniy2020
Участник
 
309 / 68 (3) ++++
Регистрация: 10.04.2007
Адрес: Москва, САО, СЗАО
попробуйте по очередно закоментировать условия в Where (возможно что то условиях выборки)

WHERE
tab1.Draft == tab2.Draft
&& tab1.Account == tab2.Account
Старый 09.01.2013, 15:42   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,655 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Физически, на SQL-сервере выполняется не запрос, а Fetch специально созданного курсора. Поэтому если Вы хотите проверить, что именно выполняется на MS SQL, то Вам надо "обернуть" запрос в курсор. Примерно так

X++:
DECLARE cursor1 CURSOR FOR
SELECT * from tab1 (...)

OPEN cursor1
FETCH NEXT FROM cursor1

CLOSE cursor1
DEALLOCATE cursor1
Если это не противоречит условию задачи, то желательно вместо OUTER JOIN использовать INNER JOIN
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 11.01.2013, 09:44   #6  
Krasher is offline
Krasher
Участник
Аватар для Krasher
 
48 / 37 (2) +++
Регистрация: 14.05.2005
Цитата:
Сообщение от Sergo4 Посмотреть сообщение
не помогает
Ещё напомню, что любой джойн можно заменить конструкцией while select внутри while select. При таком подходе удобно смотреть, какие условия вложенного select-a отработали. И делать выводы о том, какие нет.
Старый 11.01.2013, 09:57   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Krasher Посмотреть сообщение
Ещё напомню, что любой джойн можно заменить конструкцией while select внутри while select.
Не не любой, OUTER JOIN в вырожденном случае с пустой первой таблицей не получится
Старый 11.01.2013, 10:06   #8  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Вскрылась еще одна странная вещь...во вьюхе tab2 24 поля. среди них есть 2 поля размерностью строки 512.
если запрос модернизировать следующим образом, и в <список полей> не указывать эти 2 поля - то запрос прекрасно отрабатывает, если в выборку включить эти 2 поля - то данные из tab2 опять перестают выбираться
X++:
SELECT tab1
        where tab1.RecId == 5637243234
        OUTER JOIN < > from tab2
            WHERE tab1.Draft == tab2.Draft
                  && tab1.Account == tab2.Account
Старый 11.01.2013, 11:02   #9  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Попробуйте создать новую вьюху, которая включает только те поля и таблицы, которые нужны именно вам. Думаю и размер будет поменьше, и скорость повыше, да и проблемы исчезнут.
__________________
// no comments
Старый 11.01.2013, 11:44   #10  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Дело в том, что мне все поля из этой вьюхи нужны...
еще такой момент если записи из вьюхи закачать в таблицу то запрос начинает отрабатывать без проблем
Старый 11.01.2013, 11:54   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А какая у вас версия Аксапты и MSSQL?
Старый 11.01.2013, 12:02   #12  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
DAX 5.0 MS SQL SERVER 2008 R2
Старый 11.01.2013, 12:46   #13  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
А если из въюхи закачивать во временную таблицу и с ней работать? Не подходит?
Старый 11.01.2013, 15:15   #14  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Не такой вариант не подходит...дело в том, что приведенный запрос это упрощенная ситуация. На самом деле tab1 и tab2 это 2 DataSource на форме, связанные по outer join, и результирующий набор данных должен выводиться в один грид. А временную таблицу в таком случае использовать нельзя.
Старый 11.01.2013, 19:09   #15  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Может быть глупый вопрос, но всё-таки: без вьюхи обойтись нельзя? Делай выборку из 2-х таблиц только, если так работает.
Вести работу с неявными табличными переменными на форме, если говориться, что Tab1 && Ефи2 - DataSource =\
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Странное поведение функции "Отображение аналитик" Lelya DAX: Функционал 2 28.05.2009 19:36
Странное поведение ttsAbort Logger DAX: Программирование 6 28.05.2009 15:11
Электронные платежи. Странное поведение LEM DAX: Функционал 3 05.04.2008 12:00
Странное поведение резервирования после создания спланированной закупки. NEO DAX: Функционал 7 01.07.2004 14:03
Странное поведение Join Ser DAX: Программирование 14 27.05.2004 17:32

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:39.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.