No74484.2つのテーブルから最新情報を抽出する方法
| タイトル | : 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74484 |
| 投稿日 | : 2010/05/07(Fri) 11:17 |
| 投稿者 | : ひまわり |
OS:WindowsXP Access Version:2003
ひまわりと申します。 初めて質問させていただきます。 よろしくお願いします。
文書の更新管理のDBを作成しています。 2つのテーブルを用意し、1つは登録、もう1つは更新を管理しています。 登録テーブル [文書番号](主キー)、[改定]、[名前]… 改定テーブル [改定番号](主キー)、[文書番号]、[revision]、[名前]…
登録テーブルには新規登録なので、ほとんどの場合[改定]には"NR"ノンレビジョンが入ります。 改定テーブルには改定記録なので、"A" や"B"など大文字アルファベットが入ります。
この登録テーブルの[改定]と改定テーブルの[revision]をあわせて比較し、最新のrevisionをフォーム上の テキストボックスに表示させたいのです。 つまり、改定記録のないものには、登録テーブルの[NR]を表示させ、 改定記録のあるものには改定テーブルの[A]や[B]などアルファベットの大きいものを選択させて表示する というしくみをつくりたいと思っています。
よろしくお願いいたします。
|
| タイトル | : Re: 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74486 |
| 投稿日 | : 2010/05/07(Fri) 11:32 |
| 投稿者 | : Suppaman |
こういうクエリを作れば良いでしょうね。
SELECT T1.文書番号, T2.改訂番号, Nz(T2.revision, T1.改定) As 改定記録, ・・・・ FROM 登録 AS T1 Left Join 改定 AS T2 ON T1.文書番号 = T2.文書番号;
|
| タイトル | : Re^2: 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74493 |
| 投稿日 | : 2010/05/07(Fri) 13:25 |
| 投稿者 | : ひまわり |
ありがとうございます。
> SELECT T1.文書番号, T2.改訂番号, Nz(T2.revision, T1.改定) As 改定記録, ・・・・ > FROM 登録 AS T1 Left Join 改定 AS T2 ON T1.文書番号 = T2.文書番号;
早速やってみました。
しかし、T1登録テーブルにある文書番号で複数改定のあるものは、T2改定テーブルで 同じ文書番号で改定番号が異なって存在しています。 文書番号 改定番号 改定記録 001 0001 A 001 0002 B 001 0003 C 001 0004 D と存在してしまっています。 この同じ文書番号の改定番号が違うものの中から、 上記の場合だと、
D
にあたるものだけを抽出したいと思っています。 ややこしいお願いで申し訳ありません。
|
| タイトル | : Re^3: 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74494 |
| 投稿日 | : 2010/05/07(Fri) 13:38 |
| 投稿者 | : Suppaman |
> しかし、T1登録テーブルにある文書番号で複数改定のあるものは、T2改定テーブルで > 同じ文書番号で改定番号が異なって存在しています。 > 文書番号 改定番号 改定記録 > 001 0001 A > 001 0002 B > 001 0003 C > 001 0004 D > と存在してしまっています。 > この同じ文書番号の改定番号が違うものの中から、 > 上記の場合だと、 > > D > > にあたるものだけを抽出したいと思っています。
クエリをデザインビューで開き改定番号の抽出条件に DMax("改定番号", "改定", "文書番号 = '" & T1.文書番号 & "'") とすれば良いです。
|
| タイトル | : Re^4: 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74499 |
| 投稿日 | : 2010/05/07(Fri) 15:33 |
| 投稿者 | : ひまわり |
教えていただいたとおりやってみました。
確かに重なった文書番号のもは最新のレビジョンが抽出されるようになりました。
しかし、改定番号のないもの(新規登録のみで改定はされていないもの) が完全に排除されてしまっています。 NRのものはNRとして表示させたいと思っています。
よろしくお願いいたします。
|
| タイトル | : Re^5: 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74500 |
| 投稿日 | : 2010/05/07(Fri) 15:51 |
| 投稿者 | : Suppaman |
> しかし、改定番号のないもの(新規登録のみで改定はされていないもの) > が完全に排除されてしまっています。 > NRのものはNRとして表示させたいと思っています。
自分の頭も少しは使ってみたら?
|
| タイトル | : Re^6: 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74502 |
| 投稿日 | : 2010/05/07(Fri) 16:00 |
| 投稿者 | : ひまわり |
教えていただいている身で非礼があればお詫びします。
しかし、教えていただいているのをコピーしてそのままはりつけて、 動かないので質問しているわけではないのでご理解ください。
教えていただいた事でさえわかっていない部分が多々あるので それは自分で調べています。 もちろんできる限りやりたいことをできるように調べてから、です。
|
| タイトル | : Re^7: 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74510 |
| 投稿日 | : 2010/05/07(Fri) 20:28 |
| 投稿者 | : 夏はやっぱりサマー |
改定番号の抽出条件に DMax("改定番号", "改定", "文書番号 = '" & T1.文書番号 & "'") Or Is Null だとどうですか?
|
| タイトル | : Re^8: 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74557 |
| 投稿日 | : 2010/05/10(Mon) 09:49 |
| 投稿者 | : ひまわり |
報告が遅くなり、申し訳ありません。 Suppaman 様、夏はやっぱりサマー様ご教授大変感謝いたしております。
なにぶん質問するのは初めてで、非礼があったことはお詫びします。 ですが、何も考えないで質問しているわけではないのはご理解ください。 「頭を使っていない」わけではありません。 SQL文は知識がなく、SQL文の理解からはじめました。 このような経過を記載すればいいのでしょうか。 仕事の時間に追われ、質問と結果のみ記載していました。
夏はやっぱりサマー様に教えていただいたとおりやってみました。 DMax関数で改定テーブルの改定番号の同じものの中から改定が最大のもの、もしくは空白のものを抽出。 改定番号が空白なら、新規取得しかないから、という理解できました。 (あっているかな…) 理想としていた通りの結果を得ることができました。 ありがとうございました。
今後とも、自分で最大限検討してでも困ったことのみを質問させていただきますので よろしくお願い申し上げます。
再度、お返事が遅れたことをお詫びさせていただきます。
|
| タイトル | : Re^9: 2つのテーブルから最新情報を抽出する方法 |
| 記事No | : 74560 |
| 投稿日 | : 2010/05/10(Mon) 10:48 |
| 投稿者 | : Suppaman |
> SQL文は知識がなく、SQL文の理解からはじめました。 > このような経過を記載すればいいのでしょうか。 そんな必要はないです。
> 仕事の時間に追われ、質問と結果のみ記載していました。 「質問」と言われているものが全て質問ではなく、ただの「仕様の提示」になっていたので 「自分の頭も少しは使ってみたら?」という回答をしました。
|
[次頁]
このAccessフォーラム過去ログ集は、Microsoft Access Club が運営しています

|