首页 > 解决方案 > 编写子查询以在网格中显示记录

问题描述

我有两个 DAC 的 POReceipt 和 POReceiptLine。POReceiptLine 包含一个名为 MfrPartNbr 的字段。

我希望用户能够查找 POReceiptLine.MfrPartNbr 等于输入值的所有 POReceipts。

SQL 将是 SELECT * FROM dbo.POReceipt WHERE POReceipt.ReceiptNbr IN ( SELECT ReceiptNbr FROM dbo.POReceiptLine WHERE MfrPartNbr = 'MY_ENTERED_PART_NBR' )

知道如何为此编写 BQL 语句吗?

标签: subqueryacumatica

解决方案


如前所述,在这种情况下,内连接不起作用,因为您将多次收到相同的 POReceipt(每个 POReceiptLine 一次)。以下 BQL 查询显示了如何使用子查询获得所需的结果。如果 mfrPartNbr 是扩展字段,则将 POReceiptLine.mfrPartNbr 替换为正确的扩展名(例如 POReceiptLineExtension.mfrPartNbr)。

PXSelect<POReceipt, Where<Exists<
                                Select<POReceiptLine,
                                Where<POReceiptLine.receiptNbr, Equal<POReceipt.receiptNbr>,
                                    And<POReceiptLine.mfrPartNbr, Equal<Required<POReceiptLine.mfrPartNbr>>>>>>>>.Select(this, "MY_ENTERED_PART_NBR");

推荐阅读