Показать сообщение отдельно
Старый 12.11.2003, 07:55   #1  
jan_psn is offline
jan_psn
Участник
 
6 / 10 (1) +
Регистрация: 15.10.2003
Связывание нескольких таблиц
Каким образом средствами Axapta получить данный запрос:

SELECT A.ITEMGROUPID,A.ITEMID,SUM(B.AVAILPHYSICAL),C.INVENTDIMID,D.PRODDATE,D.INVENTBATCHID
FROM INVENTTABLE A
inner join INVENTSUM B on (A.ITEMID=B.ITEMID)
inner join INVENTDIM C on ((b.inventdimid=c.inventdimid) and (B.AVAILPHYSICAL>0))
LEFT OUTER JOIN INVENTBATCH D ON ((C.INVENTBATCHID=D.INVENTBATCHID) AND (D.ITEMID = b.itemid))
GROUP BY A.ITEMGROUPID,A.ITEMID,B.ITEMID,C.INVENTDIMID,D.PRODDATE,D.INVENTBATCHID
ORDER BY A.ITEMGROUPID DESC,A.ITEMID,B.ITEMID,C.INVENTDIMID,D.PRODDATE,D.INVENTBATCHID

Все проблема в условии
LEFT OUTER JOIN INVENTBATCH D ON ((C.INVENTBATCHID=D.INVENTBATCHID) AND (D.ITEMID = b.itemid))

Axpata строит внутренее объединение через WHERE, а мне необходимо через inner join

Запрос необходим для показа в форме существующей номеклатуры с указанием даты производства товара.
Задачу конечно можно решить через временный таблицы (скорость будет не очень) или не делать объединение с InventBatch, а показывать нужные поля из этой таблицы другим способом (через метод display)
Но важно принципиально - можно построить такой запрос или нет