• ベストアンサー

ビューの作成で

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

  • Oracle
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
回答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

  • どなたか取り出し方を教えてください

    はじめまして、どなたか教えてください。たとえば Xというテーブルがあって。AとB2つのフィールドがあります A列 B列 鈴木 100 鈴木 125 鈴木 156 佐藤 354 佐藤 552 佐藤 132 田中 151 田中 99 田中 845 というテーブルから a列の中のものはdistinct 的な取り出し方をしつつ B列で最も大きな数字のa行を取り出したいのです 取り出したい結果 A列 B列 鈴木 156 佐藤 552 田中 845 とするにはどうすればよいのかさっぱりわかりません どなたか教えてくださいませ

  • viewにidentity列の追加

    viewにidentity列を追加したいのですが、SQL文が分からなくて困っています。 追加する方法をご存知の方がいましたらよろしくお願いします。 作りたいviewは以下のようなviewです。 ・テーブルA ID  NAME   ADDRESS 1   山田    東京 2   鈴木    埼玉 3   田中    千葉 4   佐藤    埼玉 5   藤田    東京 6   石田    神奈川 7   松田    千葉 ・作成したいview ID  ADDRESS  出身人数 1   神奈川      1 2    埼玉      2 3    千葉      2  4    東京      2 ↑このID列をidentity列にしたいと考えています。 使用しているDBはH2です。よろしくお願いします。

  • エクセルで一覧作成

    エクセルで一覧作成 エクセルで以下のデータを作成したいのですが どのような関数を使用したらよいのでしょうか?    A   B  C  D 1 東京 田中 鈴木 小林 2 東京 鈴木  3 大阪 伊藤 鈴木  4 東京 佐藤 5 三重 小林 田中        ↓    A   B   C   D   E   F   G 1 東京 田中 鈴木 小林 鈴木 佐藤 2 大阪 伊藤 鈴木 3 三重 小林 田中 よろしくお願いします。

  • テーブル結合方法について

    MySQL5.1で、Table a ,Table b から、Table cのように取り出したいのですが、 SQLでSELECTする方法がわかりません。 Table b優先だけど、Table aにしかデータがない場合もあるといった感じです。 Table a No  Name 1 加藤 2 佐藤 3 田中 Table b No Name 2 佐藤先輩 4 田辺先輩 Table c No Name 1 加藤 2 佐藤先輩 3 田中 4 田辺先輩 どうか、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 【EXCEL】連続データの個数を抽出する方法を御教授ください

    申し訳ありませんが、どなたかお助けください。 日付が横軸、名前が縦軸にあります。 該当する場合には1が立ち、該当がなければデータは表示されません。 1か月の中で、連続するデータの最大個数を求めたいのですが、 よくわかりません。 なにとぞよろしくお願いします。   A  B   C  D   E  F 1    4/1  4/2  4/3  4/4  4/5 2 鈴木 1       1   1 3 田中     1   1   1   1 4 佐藤     1       1 上のデータのみで月末を迎えたら、 鈴木=(最大)2 田中=(最大)4 佐藤=(最大)1 ※できれば2以上の連続する個数を求めたいので、  佐藤はデータなしとしたいです。 Count Index Max あたりを使用するように思えるのですが、 情けないかな、うまく関数を使いこなせないのです。 申し訳ありませんが、 お力をお貸しください。

  • ACCESSで重複するデータをまとめたいのですが

    ACCESS超初心者です。 ヘルプを見たのですが解決できなかったので、ご質問させてください。    フィールド        フィールド1 フィールド2 田中  A        田中 A       B 田中  B    →   鈴木 A 鈴木  A        佐藤 C 佐藤   C ACCESSで上記のようにデータをまとめたいのですが どのようなテーブル、クエリを組めばよいでしょうか? ご教示願います

  • Accessで縦と横を入れ替えたい

    りんご みかん ぶどう バナナ いちご 佐藤 2   1    1   1  1 鈴木 1      1   1 田中 1   2       1 上記のようなテーブルがあるのですが、これを下記のようにしたいです。 担当者 種別 田中 りんご 鈴木 りんご 佐藤 りんご 田中 みかん 佐藤 みかん 佐藤 ぶどう 鈴木 バナナ 佐藤 バナナ 田中 いちご 鈴木 いちご 佐藤 いちご 佐藤 りんご 田中 みかん 種別の隣に数量がきてもOKです。 ご教授お願い致します。

  • 複数テーブルからのカウント集計

    初めて、投稿させて頂きます。 カルテテーブルに登録されたデータより、スタッフごとにどのサービスを何回対応したかを出力したいのですが、経験が浅く考え込んでいます。 また、日付の制限も指定したいです。 何卒、アドバイスをお願い致します。 MySQL 4.0.24-standardを使用しています。 カルテテーブル(chart_table) --------------------------------------- staff | date | service1 | service2 | service3 | service4 | 1 2007-01-27 1 2 0 0 3 2007-02-07 0 0 3 4 2 2007-03-04 1 0 3 4 スタッフテーブル(staff_table) --------------------------------------- no | id | 1 佐藤 2 鈴木 3 田中 サービステーブル(service_table) --------------------------------------- no | name | 1 サービスA 2 サービスB 3 サービスC 4 サービスD 結果(2007-01 ~ 2007-03) ---------------------------------------       佐藤 | 鈴木 | 田中 | サービスA 1 1 0 サービスB 1 0 0 サービスC 0 1 1 サービスD 0 1 1

    • ベストアンサー
    • MySQL
  • ビューで引数を使いたい

    4つのテーブルのいずれかをアクセスしますが、 select文はひとつでwhereでテーブルを指定したいので、  例:select * from ビュー where table_no=1 とかで、table_noの値でアクセスするビューは 作れますか? ※この例の場合、select * from table1が実行したい。 4つのテーブルは全て同じ構造で、 データが違うのみです。

  • Excelで

    2002/1/2 鈴木 AAAA 2002/1/5 佐藤 BBBB 2002/1/12 井本 CCCC 2002/1/20 田中 DDDD 2003/3/3 佐藤 EEEE 2003/3/12 井本 FFFF 2003/3/15 鈴木 GGGG 2003/4/2 田中 HHHH 2004/2/6 井本 IIII 2004/5/12 佐藤 JJJJ といったデータから 鈴木 2003/3/15 GGGG 佐藤 2004/5/12 JJJJ 井本 2004/2/6 IIII 田中 2003/4/2 HHHH のように、その人の最も最近のデータだけを 表示したいのですが、どなたか教えてください。 宜しくお願いします。