• 締切済み

SQLで。

webでphpを使ってpostgreSQLのデータを表示させています。 pgSQLのデータベース、「テーブルA」があります。 そこで「テーブルA」のデータを引っ張ってくるときに最後の50件だけを表示させたい場合は どういったSQL文だとそのデータを引っ張ってこれるのでしょうか? それともSQLでテーブルAのデータを全部引っ張ってきたあとphpで最後の50件だけ表示させないとだめなのでしょうか? ちなみに「テーブルA」にはフィールド名、「code」と言うフィールドにオートナンバー型のデータが 「1~n」あります。 初心者なのでうまく説明できなくて申し訳ありませんが 良いやり方がありましたら宜しくお願いしします。 PostgreSQL 7.0.2 PHP4

みんなの回答

  • youki64
  • ベストアンサー率33% (3/9)
回答No.4

下記timberさんの補足 select * from tableA order by code DESC offset 0 limit 50; postgreSQLではこれでOK

  • timber
  • ベストアンサー率29% (218/739)
回答No.3

postgreSQLって使ったことないので、間違ってるかもしれません。 select * from (select * from tableA order by code) offset 0 limit 50; もしくは select * from tableA where code >= (select max(code)-50 from tableA); でどうでしょうか。

  • J_ANBI
  • ベストアンサー率48% (24/49)
回答No.2

すみません。 補足です。 相変わらず、試していないのですが・・・。 pg_fetch_Array(コネクションID,取得したい行) という形式で指定すると、結果セットの途中から アクセスできるようですね。 逆順にソートしなくてもいいので、こっちのほうが 見栄えがいいかもしれませんね。

参考URL:
http://www.php.net/manual/ja/ref.pgsql.php
  • J_ANBI
  • ベストアンサー率48% (24/49)
回答No.1

現在、手元に実行環境がありませんので、試 していませんが・・・。 SQLに「ORDER BY 列名 DESC」をつけてくだ さい。 これで、データが逆順にソートされますから、 pg_fetch_array等で、取得する処理を50回繰 り返せば可能かな、と思います。 外してたらごめんなさい。

関連するQ&A