Date: Tue, 26 Jul 2005 10:09:03 +0900
From: "Kohichiroh Ohta" <who@example.co.jp>
いつもお世話になっております。
堀川様ご回答ありがとうございました。
> 最初に例示されたテーブルの列構成が、
> 少々おかしいのでは?
> という意味です。
正規化処理のことですね。
配慮のない悪い例でした。
すみません。
> ご自分では、どのようなSQL文を考えられましたか?
> 上巻125,126ページ付近が参考になると思います。
読んでみましたが、正直まだわかりません。
とごがわからないのかまとめてみると
SELECT 得意先ID, MAX(日付) FROM 備考 GROUP BY 得意先ID
これで、備考テーブルの各得意先毎の
日付の最大値は求められます。
しかしその日付が入っている行を
どうやって抽出するのかがわかりません。
> 通常、初学者向けの教科書では、
> 検索条件にサブクエリを記述する
> ということは学びます。
> しかし、テーブル名が来るべきところに
> SELECTのサブクエリを書く
> ということは、ほとんど触れません。
> 私の上巻の書籍でも、124ページに、ちょっと触れただけです。
パフォーマンスが良いということで
覚えていたようです。
検索条件にサブクエリを
記述するのが一般的なのですね
> SELECT * FROM 備考
> WHERE (
> 備考ID IN (
> select MAX(備考ID) AS 取得する備考ID
> FROM 備考 GROUP BY 得意先ID
> )
> )
> ORDER BY 得意先ID
なるほど、備考IDが一番大きい行が
最も新しい行だとするとこれでOKですよね
しかし、各得意先毎の日付の最大値が入っている行を
特定するにはどうすればよいのでしょう?
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|