- - PR -
SELECT文でn件目からn件分読み込みたい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-20 09:48
SELECT文でTOPを指定すると先頭からn件読み込むことができますが、
n件目からn件分読み込む事ってできますか? (WHERE句にひっかかった先頭100件目から100件分読み込みたい) よろしくお願いします。 | ||||||||
|
投稿日時: 2004-04-20 09:59
ターゲットとなるDBMSは何でしょう?SQL Serverにはそのような関数があるようです。その他のDBMSにはないものが多いです。 汎用的にするなら、インライン問い合わせで行番号を振り、行番号でもう一度絞り込むという方法があります。・・・行番号を振る関数に汎用性がないのだが。。。 | ||||||||
|
投稿日時: 2004-04-20 10:24
「できますか?」と問われれば、「分かりません」と答えるしかないように思うのですが。 何しろ、環境が分かりませんので……。 突き当たってらっしゃる問題は検索結果のページ処理等かと思いますが、それでしたら様々なところで行われている処理であり、検索すればそれぞれのDBMSに対応したTipが比較的簡単に見付かります。頑張ってください。 この掲示板内でも例えば http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9418&forum=7 等にそういう話題があります。 #自分がアイタタな発言をやらかしてしまったスレッドのポインタを出すのもアレですが | ||||||||
|
投稿日時: 2004-04-20 10:50
ここの下のほうにtopを組み合わせて取得する方法が書いてあります。
http://www.sqlpassj.org/bunkakai/web/series/ado/04.aspx | ||||||||
|
投稿日時: 2004-04-20 11:03
所謂「オープンソース」と呼ばれる概ねGPLに基づく配布自由、商用に於いてすら無料
のソース公開RDBMSも、今や市販高額RDBMSに負けないぐらいの機能は持っているか、 或いは持ちつつある。 MySQL なら mysql_data_seek() と select 構文の limit 句 を組み合わせるか、好きな だけ for 分でレコード引っ張る。 PostgreSQL ならば、pg_result_seek() と select 構文の limit 句を組み合わせるか、 好きなだけ for 分でぐるぐる回すか、select の段階で offset 句 と limit 句組み合わせる。 まぁ、結局のところ1レコードずつ進めたり戻したりするのに for 文は必要になってくる と思いますが・・・ Access, SQL Server は、私には関係が無いので使った事が無い。 使ったことがないので、全くわからない。 [ メッセージ編集済み 編集者: コブラ 編集日時 2004-04-20 11:05 ] | ||||||||
|
投稿日時: 2004-04-20 11:51
申し訳ありません。
SQL-Server2000を使用しています。 開発環境は.NET C# WindowsApplication作成です。 データアダプタのクエリビルダで簡単に作れるものなのか、 それともストアドプロシージャを駆使しなければならないものなのでしょうか? まだ勉強不足なのでご教授願いたいです。 よろしくお願いします。 [ メッセージ編集済み 編集者: キョロちゃん 編集日時 2004-04-20 12:15 ] | ||||||||
|
投稿日時: 2004-04-20 12:16
それでは無理です。 TakeOneさんが紹介されているところでは、すべての件数があらかじめわかっていなければなりません。が、もう1段インラインビューをかませば、あらかじめわかっていなくてもいけそうです。 > SELECT文でn件目からn件分読み込みたい たとえば、「2件目から2件」、「3件目から3件」?「n件目からm件分」ですよね。
| ||||||||
|
投稿日時: 2004-04-21 09:23
おさです。
Jittaさんの紹介を参考にさせていただくと、こんな方法もあります。
|
1