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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.04.2004, 15:01   #1  
Pegiy is offline
Pegiy
Участник
 
159 / 10 (1) +
Регистрация: 22.04.2003
Синтаксис join'а
Подскажите как решить, а то совсем запутался
Есть такой запрос
PHP код:
select itemIdsum(SalesQtyfrom spljLine
group by itemId
join inventDim
where spljLine
.InventDimId == inventDim.inventDimId &&
spljLine.DeliveryDate == _d &&
inventDim.InventLocationId == _location &&
spljLine.Updated == 
хочу теперь вытащить для каждого itemId из InventTablemodule - UnitId
PHP код:
select itemIdsum(SalesQtyfrom spljLine
group by itemId
join inventDim
join unitId from inventTableModule   
// добавил
where spljLine.InventDimId == inventDim.inventDimId &&
spljLine.DeliveryDate == _d &&
inventDim.InventLocationId == _location &&
spljLine.Updated == &&
spljLine.ItemId == inventTableModule.ItemId;  // добавил 
axapta ругается требует группировки
добавляю
PHP код:
join unitId from inventTableModule 
group by unitId 
// хотя смысл этого мне перестает быть понятным 
начинает неправильно выдавать sum(SalesQty)
Старый 27.04.2004, 15:44   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
А как бы Вы написали такой же запрос на SQL?
Старый 27.04.2004, 17:00   #3  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
полная каша
при написании select'ов придерживайтесь такого формата:
PHP код:
select поляеслинадо
    from 
// если были указаны поля
    
ТаблицаОдин
        group by поле 
// если нужна группировка
        
where ТаблицаОдин.ПолеОдин == УсловиеОдин
           
&& ТаблицаОдин.ПолеДва  == УсловиеДва
    join
    ТаблицаДва
        group by поле 
// если нужна группировка
        
where ТаблицаДва.ЛинкОдин == ТаблицаОдин.ЛинкОдин
           
&& ТаблицаДва.ПолеТри  == УсловиеТри
    

все четко ясно и понятно.
не мешайте в одну кучу все условия. Это Вам не TSQL.
Уловили закономерность? ;)
За это сообщение автора поблагодарили: Borsugg (1).
Старый 28.04.2004, 11:52   #4  
Pegiy is offline
Pegiy
Участник
 
159 / 10 (1) +
Регистрация: 22.04.2003
Re: полная каша
Цитата:
Изначально опубликовано ta_and
при написании select'ов придерживайтесь такого формата:
[PHP]
Уловили закономерность?
Думаю, да

PHP код:
    select itemIdsum(SalesQty)
        
from spljLine
            group by itemId
            where spljLine
.DeliveryDate == _d &&
                  
spljLine.Updated == 0
        join inventDim
            where inventDim
.InventLocationId == _location &&
                  
inventDim.inventDimId == spljLine.InventDimId
        join inventTableModule
            where inventTableModule
.ItemId == spljLine.ItemId &&
                  
inventTableModule.ModuleType == 1
только толку то...

а в sql бы сделали так (если без dim'а)
PHP код:
select sp.itemidsp.sqit.unitid 
    from 
(select itemid'sq'=sum(salesqty
              
from SalesPickingListJournalLine
              where DeliveryDate
=_d and Updated=0
              group by itemid 
spInventTableModule it  
        where sp
.itemid=it.itemid and it.moduletype=
Старый 28.04.2004, 12:33   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
В первом своем сообщении (варианте запроса) Вы забыли про ModuleType, а в последнем про group by UnitId.

Я имел ввиду, что написать запрос на SQL так как это сделает Аксапта (без вложенных select). И сравнить запрос сгенеренный Аксаптой со своим.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX UK: Join the Virtual Partner Community Blog bot DAX Blogs 0 26.03.2008 04:17
Глюки в Query с разными типами Join (в т.ч. NonExistsJoin) к одной таблице gl00mie DAX: Программирование 10 14.02.2007 13:22
2 join-а + CasheLookup = EntireTable vallys DAX: Программирование 1 10.03.2006 13:20
2 и более OUTER JOIN к одному паренту Ronin DAX: Программирование 21 19.12.2005 13:42
Синтаксис Join Vpooh DAX: Программирование 3 26.09.2003 11:12

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

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

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