(Query)DerivedReferrer!

@DBFlute-0.8.8.1
@Java
> (DBFLUTE-410){Java}:
> 子テーブルの導出カラムで絞り込み(QueryDerivedReferrer)

あまり利用頻度は高くないと思われますが、定型的なDBアクセスです。
今まで「(Specify)DerivedReferrer」で子テーブル導出カラムを
取得し、そしてその値で並び替えをすることもできましたが、
絞り込むことはできませんでした。

【(Specify)DerivedReferrer】
http://d.hatena.ne.jp/jflute/20080625/1214329516

それは、ある意味「SQLの文法上の限界」だったのですが、
「(Specify)DerivedReferrer」とは独立した処理で実現することで
「子テーブル導出カラムで絞り込み」という目的を達成することができました。
この機能を「(Query)DerivedReferrer」と呼びます。
// 1800円以上の支払済み購入のある会員一覧を検索。
MemberCB cb = new MemberCB();
cb.query().setMemberStatusCode_Equal_Formalized();
cb.query().derivedPurchaseList().max(new SubQuery<PurchaseCB>() {
    public void query(PurchaseCB subCB) {
        subCB.specify().columnPurchasePrice(); // *Point!
        subCB.query().setPaymentCompleteFlg_Equal_True();
    }
}).greaterEqual(1800); // *Don't forget!
select dflocal.MEMBER_NAME as MEMBER_NAME, ... 
  from MEMBER dflocal 
 where dflocal.MEMBER_STATUS_CODE = 'FML'
   and (select max(dfsublocal_0.PURCHASE_PRICE)
          from PURCHASE dfsublocal_0 
         where dfsublocal_0.MEMBER_ID = dflocal.MEMBER_ID
           and dfsublocal_0.PAYMENT_COMPLETE_FLG = 1
       ) >= 1800
詳しくは、ConditionBeanPlatinumTestをご覧下さい。
「子テーブル導出カラムで絞り込み(QueryDerivedReferrer)-Max」

ちなみに通称(会話などで)でどちらも「DerivedReferrer」と言うことから
(Specify)DerivedReferrerと(Query)DerivedReferrerというように
表記することがあります。

DBFluteは子テーブル(Referrer)に関しては、
上記機能だけでなく、LoadReferrerやExistsSubQueryなど
徹底したサポートをしています。