Написание подзапроса для отображения записей в сетке - PullRequest
0 голосов
/ 31 мая 2019

У меня есть два ЦАПа POReceipt и POReceiptLine. POReceiptLine содержит поле с именем MfrPartNbr.

Я хочу, чтобы пользователь мог искать все POReceipts, где POReceiptLine.MfrPartNbr равен введенному значению.

SQL будет ВЫБРАТЬ * ОТ dbo.POReceipt ГДЕ POReceipt.ReceiptNbr IN ( ВЫБЕРИТЕ ReceiptNbr ОТ dbo.POReceiptLine WHERE MfrPartNbr = 'MY_ENTERED_PART_NBR' )

Есть идеи, как написать BQL-оператор для этого?

1 Ответ

0 голосов
/ 16 июля 2019

Как уже говорилось, в этом случае внутреннее соединение не будет работать, потому что вы будете получать один и тот же 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");
...