我正在尝试使用PXSelectJoinOrderBy为以下SQL语句创建视图
SELECT * FROM INVENTORYITEM II
LEFT JOIN INItemXRef X1 ON II.InventoryID = X1.InventoryID AND
X1.AlternateType = '0VPN' LEFT JOIN INItemXRef X2 ON II.InventoryID = X1.InventoryID AND
X2.AlternateType = '0CPN'
Run Code Online (Sandbox Code Playgroud)
我使用以下语句一次加入INItemXRef表,它工作正常.
public PXSelectJoinOrderBy<InventoryItem, LeftJoin<INItemXRef, On<INItemXRef.inventoryID, Equal<InventoryItem.inventoryID>>>, OrderBy<Asc<InventoryItem.inventoryCD>>> FilteredItems;
Run Code Online (Sandbox Code Playgroud)
如何使用不同的别名再次加入INItemXRef?
小智 6
您可以通过创建继承INItemXRef类并在bql查询中使用它们的类来获得所需的结果.
public PXSelectJoinOrderBy<InventoryItem,
LeftJoin<VendorINItemXRef,
On<InventoryItem.inventoryID,
Equal<VendorINItemXRef.inventoryID>,
And<VendorINItemXRef.alternateType,
Equal<string_0VPN>>>,
LeftJoin<CustomerINItemXRef,
On<InventoryItem.inventoryID,
Equal<CustomerINItemXRef.inventoryID>,
And<CustomerINItemXRef.alternateType,
Equal<string_0CPN>>>>>,
OrderBy<Asc<InventoryItem.inventoryCD>>> FilteredItems;
public class VendorINItemXRef : INItemXRef
{
public new class inventoryID : IBqlField{}
public new class alternateType : IBqlField{}
}
public class CustomerINItemXRef : INItemXRef
{
public new class inventoryID : IBqlField { }
public new class alternateType : IBqlField { }
}
Run Code Online (Sandbox Code Playgroud)
您还需要覆盖将用于比较的参数,以便系统可以绑定它们.
有关其他信息,您还可以检查此问题: Acumatica BQL查询多次使用同一个表.