• ベストアンサー

ビューの作成で

オラクルのテーブルデータでいつも使うデータをビューで作成したいと思っています。 ●テーブルデータ (No = 履歴順) 人 No 仕事 ----- --- -------------- 田中 1 青山商事 田中 2 山手商事 田中 3 寿商事 佐藤 1 関東北電気 鈴木 1 おにぎり工場 鈴木 2 せんべい工場 でそれぞれの人の最大Noと仕事をビューで作りたい ●ビューデータ (最大No = 最新の仕事) 人 No 仕事 ----- --- -------------- 田中 3 寿商事 佐藤 1 関東北電気 鈴木 2 せんべい工場 このようなビューを作成する場合のSQLをアドバイス下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは。 ビュー作成のアドバイスとしては、 「なるべく使わない」「必要な時にSQLで取得する」 方がレスポンス的にはいいですよ。 (^^ゞ

taaaaaaa
質問者

お礼

アドバイスありがとうございます。 その後ビューをいろいろ試してみたのですが、フィールド数の多いビューだとレスポンスが悪いことがわかりました。 ビューは最低限使って、SQL処理することにしました。

その他の回答 (2)

  • NAATAN
  • ベストアンサー率33% (57/170)
回答No.3

以下のようなSQL文を実行すればビューは作成可能だと思います。 CREATE OR REPLACE VIEW ビュー名 (人,NO,仕事) AS SELECT 人,NO,仕事 FROM テーブル名 WHERE (人,NO) IN (SELECT 人,MAX(NO) FROM テーブル名 GROUP BY 人) 因みに、「No」は「NO」に変換されてしまいました。

taaaaaaa
質問者

お礼

アドバイスありがとうございます。 早速試してみました。 クライアントからビューをアクセスするとレスポンス的に問題があるかなと。 なかなかビューを使うのも難しいですね。

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.2

ビュー云々と質問内容は関係ないですね。 やり方はいろいろありますが、よほど古いバージョン(7.2以前) でなければこんな感じで。 select a.* from test a ,(select 人,max(No) No from test group by 人) b where a.人 = b.人 and a.No = b.No

関連するQ&A