[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 メーリングリストの案内