如何使用 PXSelectJoinOrderBy 加入相同的 table 两次
How to join same table twice using PXSelectJoinOrderBy
我正在尝试使用 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'
我已经使用以下语句加入 INItemXRef table 一次并且工作正常。
public PXSelectJoinOrderBy<InventoryItem, LeftJoin<INItemXRef, On<INItemXRef.inventoryID, Equal<InventoryItem.inventoryID>>>, OrderBy<Asc<InventoryItem.inventoryCD>>> FilteredItems;
如何使用不同的别名再次加入 INItemXRef?
您可以通过创建 2 个 class 继承 class 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 { }
}
您还需要覆盖将用于比较的参数,以便系统可以绑定它们。
有关其他信息,您还可以查看此问题:
.
我正在尝试使用 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'
我已经使用以下语句加入 INItemXRef table 一次并且工作正常。
public PXSelectJoinOrderBy<InventoryItem, LeftJoin<INItemXRef, On<INItemXRef.inventoryID, Equal<InventoryItem.inventoryID>>>, OrderBy<Asc<InventoryItem.inventoryCD>>> FilteredItems;
如何使用不同的别名再次加入 INItemXRef?
您可以通过创建 2 个 class 继承 class 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 { }
}
您还需要覆盖将用于比较的参数,以便系统可以绑定它们。
有关其他信息,您还可以查看此问题: