[Seasar-user:11005] Re: [S2Dao]SQLファイルを使わずにUNIONを実行したいです

kubo [E-MAIL ADDRESS DELETED]
2007年 10月 15日 (月) 18:24:26 JST


久保です。

> 要件は、
> 久保さんが提示された要件にプラスして、
> 
> 「(複数キーワードの)AND検索の結果のうしろにOR検索の結果をくっつけて返す」

なるほど、したら、UNIONと複数キーワード条件は、
また別の話になるのですね...
(ページングは自分もありました...)

もし、興味ありましたら、わからないことは遠慮なく聞いてくださって
結構ですので。(今回使う使わない別にして)





補足ですが
DBFluteで「B」の方法だとこんな感じになります。

KeywordTableCB cb = new KeywordTableCB();
LikeSearchOption likeSearchOption = new LikeSearchOption();
likeSearchOption.likeContain().splitBySpace();
cb.query().setKeyword_LikeSearch(keywords, likeSearchOption);
cb.fetchFirst(20); // 1ページを20件とする
cb.fetchPage(3); // 3ページを検索する(実際は画面から変数で取得)
{
    KeywordTableCB unionCB = new KeywordTableCB();

    // ORでつなげたい別の条件
    unionCB.query().setOtherColumn_GreaterEqual(3);

    // Unionの関連付け
    cb.union(unionCB.query());
}
List<KeywordTable> ls = bhv.selectList(cb); // 検索実行

    ↓↓↓

select KEYWORD_TABLE.ID
     , KEYWORD_TABLE.NAME
     , ...
  from KEYWORD_TABLE
 where KEYWORD like '%Seasar%'
   and KEYWORD like '%S2Dao%'
   and KEYWORD like '%DBFlute%'
 union
select KEYWORD_TABLE.ID
     , KEYWORD_TABLE.NAME
     , ...
  from KEYWORD_TABLE
 where OTHER_COLUMN >= 3

 ※条件は全てBind変数として実行されます




Seasar-user メーリングリストの案内