Показать сообщение отдельно
Старый 13.02.2014, 10:48   #3  
McArrow is offline
McArrow
Участник
 
45 / 38 (2) +++
Регистрация: 18.05.2009
Добрался до 2009 аксапты, в ней действительно можно получить требуемый результат, но только через Query (проверено на MS SQL). К сожалению, в четвёрке не работает, видимо из-за отсутствия поддержки "разветвлённых" запросов, когда к главному датасорсу цепляется несколько вложенных.

X++:
    Query q;
    QueryBuildDatasource qbds, qbdsNE;
    QueryRun qr;
;
    q = new Query();
    qbds = q.addDataSource(tablenum(Table5), 'Table5');
    qbdsNE = qbds.addDataSource(tablenum(Table6));
    qbdsNE.joinMode(JoinMode::NoExistsJoin);
    qbdsNE.addLink(fieldnum(Table5, Table6Id), fieldnum(Table6, Id), 'Table5');
    qbdsNE = qbds.addDataSource(tablenum(Table7));
    qbdsNE.joinMode(JoinMode::NoExistsJoin);
    qbdsNE.addLink(fieldnum(Table5, Table7Id), fieldnum(Table7, Id), 'Table5');
    qr = new QueryRun(q);
    qr.next();
X++:
SELECT A.ID,A.TABLE6ID,A.TABLE7ID,A.RECVERSION,A.RECID FROM TABLE5 A 
WHERE (A.DATAAREAID='DAT') 
AND NOT EXISTS (SELECT 'x' FROM TABLE6 B WHERE ((B.DATAAREAID='DAT') AND (A.TABLE6ID=B.ID))) 
AND NOT EXISTS (SELECT 'x' FROM TABLE7 C WHERE ((C.DATAAREAID='DAT') AND (A.TABLE7ID=C.ID))) 
ORDER BY A.DATAAREAID,A.RECID