![]() |
#3 |
Участник
|
Добрался до 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 |
|