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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.07.2005, 11:29   #1  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
Помогите с SQL запросом
PHP код:
   while select inventTransGroup 
        group by InventTransId
        where inventTransGroup
.TransType == InventTransType::InventTransfer
    
{
        
select inventTransPosting 
            where inventTransPosting
.InventTransId == inventTransGroup.InventTransId &&
                
inventTransPosting.InventTransPostingType == InventTransPostingType::Financial;
         
// Some handle

Можно ли это сделать одним запросом ?
Например, как в MS SQL:

select distinct inventTrans.InventTransId, InventTransPosting.Account, InventTransPosting.AccountOffset
from inventTrans
join inventTransPosting on
(inventTransPosting.InventTransId = inventTrans.InventTransId) and
(inventTransPosting.InventTransPostingType = 1)
where inventTrans.TransType = 6
Старый 26.07.2005, 11:37   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
PHP код:
while select inventTransGroup 
    group by InventTransId
    where inventTransGroup
.TransType == InventTransType::InventTransfer
        join inventTransPosting 
        where inventTransPosting
.InventTransId == inventTransGroup.InventTransId &&
        
inventTransPosting.InventTransPostingType == InventTransPostingType::Financial
{
         // Some code

С Уважением,
Георгий
Старый 26.07.2005, 11:49   #3  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
Я поначалу так и написал. Но ничего не получается.

Вот что посылается на сервер:
SELECT A.INVENTTRANSID
FROM INVENTTRANS A,INVENTTRANSPOSTING B
WHERE ((A.DATAAREAID='cnt') AND (A.TRANSTYPE=6)) AND ((B.DATAAREAID='cnt') AND
((B.INVENTTRANSID=A.INVENTTRANSID) AND (B.INVENTTRANSPOSTINGTYPE=1)))
GROUP BY A.INVENTTRANSID
ORDER BY A.INVENTTRANSID OPTION(FAST 19)

А мне нужны еще и поля из InventTransPosting
Старый 26.07.2005, 12:12   #4  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Можно сделать вьюху, объединяющую две таблицы и пользоваться ей.
Старый 26.07.2005, 12:15   #5  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Или использовать класс Query. Мощная вещь. Поищите на форуме.
Старый 26.07.2005, 12:21   #6  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
Сделал order by вместо group by и внутри обработки пропускаю одинаковые записи (типа distinct )
Можно конечно и вьюшку, но эта задача одноразовая.
Старый 26.07.2005, 12:52   #7  
ALES is offline
ALES
Участник
Злыдни
 
220 / 45 (2) +++
Регистрация: 11.08.2004
Цитата:
Изначально опубликовано malex
А мне нужны еще и поля из InventTransPosting
Так перечислите их явно в выборке и group by по ним добавьте
Старый 26.07.2005, 13:12   #8  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
PHP код:
    while select inventTransGroup 
        group by InventTransId
        where inventTransGroup
.TransType == InventTransType::InventTransfer
        join inventTransPosting
            group by inventTransId
AccountAccountOffsetPostingTypePostingTypeOffset
            where 
(inventTransPosting.InventTransId == inventTransGroup.InventTransId) &&
                (
inventTransPosting.InventTransPostingType == InventTransPostingType::Financial
Действительно все получается.

Спасибо.
Старый 26.07.2005, 13:43   #9  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
А поскольку поля InventTrans мне не нужны, можно написать вообще без group by:
PHP код:
    while select inventTransPosting
        where inventTransPosting
.InventTransPostingType == InventTransPostingType::Financial
        exists join inventTransGroup
            where inventTransPosting
.InventTransId == inventTransGroup.InventTransId &&
                  
inventTransGroup.TransType == InventTransType::InventTransfer 
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помогите с запросом AvrDen DAX: Программирование 8 07.08.2007 15:24
Помогите с запросом leshy DAX: Программирование 40 31.05.2007 14:51
Помогите с запросом.. DarkBear DAX: Программирование 2 15.08.2005 13:38
Помогите пожалуйста с запросом... velk DAX: Программирование 18 20.10.2004 08:44
Пожалуйста, помогите с запросом chel DAX: Программирование 19 12.07.2004 11:53

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

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

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