05.08.2016, 14:31 | #1 |
Участник
|
Query self outer join
Добрый день коллеги!
Подскажите, можно ли как то, приджойнить табличку саму к себе по одному и тому же полю, но с разными рейнджами? Пытался как-то так: X++: Query query = new Query(); QueryBuildDataSource qbdsRoutePrimary = query.addDataSource( tableNum( Route ), "Parrent", UnionType::Union ); QueryBuildDataSource qbdsRouteSecondary = qbdsRoutePrimary.addDataSource( tableNum( Route ), "Child" ); QueryRun queryRun; Route routePrimary; Route routeSecondary; ; qbdsRouteSecondary.joinMode( JoinMode::OuterJoin ); qbdsRouteSecondary.fetchMode( QueryFetchMode::One2Many ); qbdsRouteSecondary.relations( false ); qbdsRoutePrimary.addRange( fieldNum( Route, RouteId ) ).value( routeId ); qbdsRoutePrimary.addRange( fieldNum( Route, OprPriority ) ).value( SysQuery::value( RouteOprPriority::Primary ) ); qbdsRouteSecondary.addLink( fieldNum( Route, RouteId ), fieldNum( Route, RouteId ), qbdsRoutePrimary.name() ); qbdsRouteSecondary.addLink( fieldNum( Route, OprId ), fieldNum( Route, OprId ), qbdsRoutePrimary.name() ); qbdsRouteSecondary.addRange( fieldNum( Route, OprPriority ) ).value( SysQuery::valueNot( RouteOprPriority::Primary ) ); queryRun = new QueryRun( Query ); while ( queryRun.next() ) { routePrimary = queryRun.get( tableNum( Route ), 1 ); routeSecondary = queryRun.get( tableNum( Route ), 2 ); } ЗЫ. Нужен именно Query, так как там большая вариативность запроса должна быть.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу) |
|
05.08.2016, 14:39 | #2 |
Участник
|
А зачем вы Union делаете?
Объединение не предполагает ограничения между датасорсами, входящими в разные ветки
__________________
Axapta v.3.0 sp5 kr2 |
|
05.08.2016, 14:43 | #3 |
Участник
|
Цитата:
Извиняюсь, Очепятка закралась. Вместо: X++: qbdsRouteSecondary.addLink( fieldNum( Route, OprId ), fieldNum( Route, OprId ), X++: qbdsRouteSecondary.addLink( fieldNum( Route, OprNum ), fieldNum( Route, OprNum ), Тему можно закрыть, а лучше удалить.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу) |
|
|
|