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 29.07.2005, 12:34   #1  
DreamCreator ist offline
DreamCreator
Moderator
Benutzerbild von DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Registriert seit: 04.11.2004
Ort: Казань
select count(RecId)
День Добрый!

Написал запрос:

PHP-Code:
       totalRecCount = (select count(RecIdfrom inventJournalTrans
            where inventJournalTrans
.JournalId == _journalId &&
                  
inventJournalTrans.TransDate == _transDate

                   join inventTrans
                    where   inventTrans
.InventTransId == inventJournalTrans.InventTransId &&
                            
inventTrans.StatusIssue == StatusIssue::Sold &&
                            
inventTrans.Qty != 0
                
).RecId
В чем ошибка? (Без join рабоает)
Alt 29.07.2005, 12:36   #2  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Блин! А сам-то как думаешь?

Ты ж только RecId тянешь из inventJournalTrans. А связку делаешь по inventJournalTrans.InventTransId.

С Уважением,
Георгий
Alt 29.07.2005, 12:39   #3  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.343 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Не, поле, по которому делается связка - тут ни при чем. Просто выражение
PHP-Code:
join inventTrans 
на самом деле означает
PHP-Code:
join from inventTrans 
. Когда используешь агрегатные функции (count() в данном случае) - нужно указывать по каким полям идет группировка, т.е. * запрещена. В крайнем случае, напиши
PHP-Code:
join count(recIdfrom inventTrans 
. И будет счастье
Alt 29.07.2005, 12:41   #4  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.343 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
а! и еще. ).RecId - как ты думаешь в какой таблице относится? Аксапта этого не знает.
Поэтому тут нужно уже потом обращаясь к табл переменной получить .RecId
Alt 29.07.2005, 12:43   #5  
db ist offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Registriert seit: 01.04.2004
Ort: Москва
короче
1. вытащи из скобок
2. используй exists join
Alt 29.07.2005, 12:55   #6  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Cool Ах, так?
И вообще, хороший тон - это пользоваться Query.

Используй CountTotal()

С Уважением,
Георгий

P.S. Да, кстати, надеюсь, у тебя класс QueryRun подправлен, как у mazzy написано? А то в стандартной версии проблемы были...
Alt 02.08.2005, 11:50   #7  
kvan ist offline
kvan
Moderator
Benutzerbild von kvan
Дети Юза
 
775 / 49 (3) +
Registriert seit: 07.08.2002
Ort: Donetsk
Zitat:
2. используй exists join
а потом на этапе оптимизации будешь переписывать ...
Alt 02.08.2005, 11:55   #8  
DreamCreator ist offline
DreamCreator
Moderator
Benutzerbild von DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Registriert seit: 04.11.2004
Ort: Казань
Re: Ах, так?
Zitat:
Изначально опубликовано George Nordic

P.S. Да, кстати, надеюсь, у тебя класс QueryRun подправлен, как у mazzy написано? А
то в стандартной версии проблемы были...
А можно ссылку?

2 kvan:

Можно поподробнее?
Alt 02.08.2005, 12:02   #9  
kvan ist offline
kvan
Moderator
Benutzerbild von kvan
Дети Юза
 
775 / 49 (3) +
Registriert seit: 07.08.2002
Ort: Donetsk
Zitat:
А можно ссылку?
http://www.axforum.info/forums/showt...ght=CountTotal

Zitat:
Можно поподробнее?
Я по возможности использую вместо exists join Table конструкцию join (RecId) from Table.
Смысл тот же - но местам очень сильно сокращает время выполнения запроса.
Alt 02.08.2005, 12:42   #10  
ALES ist offline
ALES
Участник
Злыдни
 
220 / 45 (2) +++
Registriert seit: 11.08.2004
Zitat:
Изначально опубликовано db
2. используй exists join
быстрее join tableId from
Alt 02.08.2005, 12:50   #11  
kvan ist offline
kvan
Moderator
Benutzerbild von kvan
Дети Юза
 
775 / 49 (3) +
Registriert seit: 07.08.2002
Ort: Donetsk
Zitat:
быстрее join tableId from
Можно и так, но в RecId все таки номер записи, а это иногда бывает нужно

DataAreaId удобно использовать в случае когда в первой таблице есть группировка и после join someTable нужно тоже сделать группировку. Вот тут мы и вспоминаем про DataAreaId
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Select count(RecId) Упорядочить по возрастанию AxTimur DAX: Программирование 7 10.10.2008 15:22
Очередные грабли while select CasperSKY DAX: Программирование 14 23.03.2008 12:30
Что лучше select RecId или select TableId Logger DAX: Программирование 9 02.06.2007 15:13
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
Fred Shen: Always use recId to know if a select statement returns a record Blog bot DAX Blogs 0 28.10.2006 16:40

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:32 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.