![]() |
#5 |
Участник
|
Без fetchMode четвёрка в аналогичном query вообще игнорирует подчинённые датасорсы. А с QueryFetchMode::One2One запрос таки формируется, но криво:
X++: q = new Query(); qbds = q.addDataSource(tablenum(Table5), 'Table5'); qbdsNE = qbds.addDataSource(tablenum(Table6), 'Table6'); qbdsNE.joinMode(JoinMode::NoExistsJoin); qbdsNE.fetchMode(QueryFetchMode::One2One); qbdsNE.addLink(fieldnum(Table5, Table6Id), fieldnum(Table6, Id)); qbdsNE = qbds.addDataSource(tablenum(Table7), 'Table7'); qbdsNE.joinMode(JoinMode::NoExistsJoin); qbdsNE.fetchMode(QueryFetchMode::One2One); qbdsNE.addRange(fieldnum(Table7, RecId)).value('(Table7.Id==Table5.Table7Id)'); 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 |
|