gpt4 book ai didi

axapta - 使用查询类将多个表连接到同一个表

转载 作者:行者123 更新时间:2023-12-03 23:24:44 25 4
gpt4 key购买 nike

我正在使用查询类来构建一个查询,该查询将有两个或三个表连接到同一个表,如下所示:

qbds1 = query.addDataSource(tablenum(Table1));

qbds2 = qbds1.addDataSource(tablenum(Table2));
qbds2.relations(true);

qbds3 = qbds2.addDataSource(tablenum(Table3));
qbds3.relations(true);

qbds4 = qbds3.addDataSource(tablenum(Table4));
qbds4.relations(true);

qbds5 = qbds3.addDataSource(tablenum(Table5));
qbds5.relations(true);

qbds6 = qbds5.addDataSource(tablenum(Table6));
qbds6.relations(true);
qbds6.joinMode(JoinMode::ExistsJoin);

在这个例子中,我试图加入表 4 到表 3 和表 5 到表 3 但它不像我想要的那样工作;我已经检查了调试器,直到:
qbds5 = qbds3.addDataSource(tablenum(Table5))

一切正常;一旦执行此行,Table4 和 Table3 之间的连接就会消失,并且不会添加 Table5 和 Table3 之间的连接。发送到 SQL 服务器的查询实际上是 2 个查询,一个在 table1、table2 和 table3 之间,另一个在 table5 和 table6 之间(指向 table4 的链接不存在)。如果我在最后执行 info (query.xml()),我会看到我想要的所有表之间的连接。

甚至可以使用查询类来实现这一点吗?

最佳答案

如果在一个连接级别上有多个数据源,则需要设置 FetchMode数据源的比例为 1:1(默认为 1:n)。

在您的情况下,查询树看起来像

Table1
+ Table2
+ Table3
+ Table4
+ Table5
+ Table6

所以 Table4Table5处于相同的联接级别并且需要 FetchMode 1:1。设置 FetchMode对于数据源,使用类似于
qbds2.fetchMode(QueryFetchMode::One2One);

Magical FetchMode propertySee how the fetch and join modes in Microsoft Dynamics AX queries work了解更多信息。

关于axapta - 使用查询类将多个表连接到同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29751748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com