- - PR -
oo4oを使用してのPageSize指定
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-31 16:46
SQL(select文)の結果をWEB上に出力する際に、例えば、結果が500件あったら、まず100件表示して、次のページというタグをクリックすると、次の100件を表示という感じで表現したいと思っています。ADOだとそのようなやり方が載っていますが、oo4oでのやり方をしっていらっしゃる方がおりましたら、どうかアドバイスをお願いいたします。
| ||||||||
|
投稿日時: 2005-10-31 17:17
以前、自分もoo4oで同様のことを実現したことがあります。 そのときはSQLで対応しました。 SQLでの対応方法ですが、 Oracleの隠し列?でrownumがあります。 これは出力対象の列を1から行数分の連番を持っている列です。 表示したい行数が分かっているのであれば
とSQL文で書くことで100件目から199件目までを取得することができます。 表示件数を絞りたいだけであれば、これで済むのですが、 全体件数を表示しつつX件目〜Y件目を表示したいというのであれば、 分析関数のcountを用いて列としての全体件数を付加し、 X件目〜Y件目という条件を付加してあげればできます。 自分のところで申し訳ないのですが、 分析関数countのSQLの例となるページがあるので、 http://kaya.wankuma.com/tipssql/orasql1.htm を参照してみてください。 [ メッセージ編集済み 編集者: 夏椰【SUICA】 編集日時 2005-10-31 17:18 ] | ||||||||
|
投稿日時: 2005-10-31 17:37
夏椰【SUICA】さん、ご返答ありがとうございました。
参照のページを拝見させてもらいましたが、そのことでお聞きしたいことがございます。 select * from ( select rownum rn, --行番号 count(key) over ( partition by 0 ) selected_rownum, --全体件数 select key from Aorder by t.key ) where rn between X and Y とありますが、例えば、単純に、select count(*) from table_A where col_a = '1'というSQLがあったとして、この全件数が、550件(selectしてみないと分からない)として、100件ずつ表示させたい場合は、上記のSQLをどう修正すればよろしいのでしょうか?お願いいたします。 | ||||||||
|
投稿日時: 2005-10-31 17:42
http://oraclesqlpuzzle.hp.infoseek.co.jp/10-3.html
こんな方法もありますね | ||||||||
|
投稿日時: 2005-10-31 17:48
select count(*) from table_A 〜ではどう頑張っても1行しか帰ってこないので、 table_Aにcol_a,col_b,col_cが存在し、col_bはNOT NULL列である。 このテーブルからcol_a='1'となるデータを取得し 1行目から99行目までを表示したい。 とした場合、
というSQLになります。 分析関数countを使い全体行を列として付加したテーブルに対し、 X行目〜Y行目という条件を付加しています。 上記の分析関数countはcol_bが0以上であるものの件数が表示されます。 |
1