AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 09.01.2013, 14:11   #1  
Sergo4 ist offline
Sergo4
Участник
 
51 / 15 (1) ++
Registriert seit: 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 нормально выбираются.
Почему такое может быть?
Alt 09.01.2013, 15:01   #2  
imir ist offline
imir
Участник
 
159 / 161 (6) ++++++
Registriert seit: 28.05.2010
Синхронизация, реиндексация, обновление статистики?
Alt 09.01.2013, 15:11   #3  
Sergo4 ist offline
Sergo4
Участник
 
51 / 15 (1) ++
Registriert seit: 01.02.2011
не помогает
Alt 09.01.2013, 15:30   #4  
Evgeniy2020 ist offline
Evgeniy2020
Участник
 
309 / 68 (3) ++++
Registriert seit: 10.04.2007
Ort: Москва, САО, СЗАО
попробуйте по очередно закоментировать условия в Where (возможно что то условиях выборки)

WHERE
tab1.Draft == tab2.Draft
&& tab1.Account == tab2.Account
Alt 09.01.2013, 15:42   #5  
Владимир Максимов ist offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1.726 / 1208 (44) ++++++++
Registriert seit: 13.01.2004
Blog-Einträge: 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
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Alt 11.01.2013, 09:44   #6  
Krasher ist offline
Krasher
Участник
Benutzerbild von Krasher
 
48 / 37 (2) +++
Registriert seit: 14.05.2005
Zitat:
Zitat von Sergo4 Beitrag anzeigen
не помогает
Ещё напомню, что любой джойн можно заменить конструкцией while select внутри while select. При таком подходе удобно смотреть, какие условия вложенного select-a отработали. И делать выводы о том, какие нет.
Alt 11.01.2013, 09:57   #7  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.452 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Zitat:
Zitat von Krasher Beitrag anzeigen
Ещё напомню, что любой джойн можно заменить конструкцией while select внутри while select.
Не не любой, OUTER JOIN в вырожденном случае с пустой первой таблицей не получится
Alt 11.01.2013, 10:06   #8  
Sergo4 ist offline
Sergo4
Участник
 
51 / 15 (1) ++
Registriert seit: 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
Alt 11.01.2013, 11:02   #9  
dech ist offline
dech
Участник
Benutzerbild von dech
Самостоятельные клиенты AX
 
650 / 352 (13) ++++++
Registriert seit: 25.06.2009
Ort: Омск
Blog-Einträge: 3
Попробуйте создать новую вьюху, которая включает только те поля и таблицы, которые нужны именно вам. Думаю и размер будет поменьше, и скорость повыше, да и проблемы исчезнут.
__________________
// no comments
Alt 11.01.2013, 11:44   #10  
Sergo4 ist offline
Sergo4
Участник
 
51 / 15 (1) ++
Registriert seit: 01.02.2011
Дело в том, что мне все поля из этой вьюхи нужны...
еще такой момент если записи из вьюхи закачать в таблицу то запрос начинает отрабатывать без проблем
Alt 11.01.2013, 11:54   #11  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.452 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
А какая у вас версия Аксапты и MSSQL?
Alt 11.01.2013, 12:02   #12  
Sergo4 ist offline
Sergo4
Участник
 
51 / 15 (1) ++
Registriert seit: 01.02.2011
DAX 5.0 MS SQL SERVER 2008 R2
Alt 11.01.2013, 12:46   #13  
user_ax ist offline
user_ax
Участник
Benutzerbild von user_ax
 
601 / 39 (3) +++
Registriert seit: 07.10.2012
Ort: ZP
А если из въюхи закачивать во временную таблицу и с ней работать? Не подходит?
Alt 11.01.2013, 15:15   #14  
Sergo4 ist offline
Sergo4
Участник
 
51 / 15 (1) ++
Registriert seit: 01.02.2011
Не такой вариант не подходит...дело в том, что приведенный запрос это упрощенная ситуация. На самом деле tab1 и tab2 это 2 DataSource на форме, связанные по outer join, и результирующий набор данных должен выводиться в один грид. А временную таблицу в таком случае использовать нельзя.
Alt 11.01.2013, 19:09   #15  
user_ax ist offline
user_ax
Участник
Benutzerbild von user_ax
 
601 / 39 (3) +++
Registriert seit: 07.10.2012
Ort: ZP
Может быть глупый вопрос, но всё-таки: без вьюхи обойтись нельзя? Делай выборку из 2-х таблиц только, если так работает.
Вести работу с неявными табличными переменными на форме, если говориться, что Tab1 && Ефи2 - DataSource =\
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Странное поведение функции "Отображение аналитик" 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

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 02:31 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.