抽出してFGに表示するには?


初心丸  2007-01-24 02:05:02  No: 134979

SQLに関する適当なフォーラムを見つけられなかったので、こちらにご質問させていただきました。失礼ですが、何方かお教えいただければと思います。

(テーブルA)
INDEX    ナンバー      取扱者         IN             OUT              
   1      1001           A        2007/01/01               
   2      1001           B                       2007/01/02           
   3      1002           A        2007/01/03               
   4      1001           A        2007/01/04               
   5      1002           A                       2007/01/05           
   6      1002           B        2007/01/06           
   7      1001           A                       2007/01/07           
   8      1002           B                       2007/01/08             

上記のようなテーブルがあり、最終的に現在OUTの状態にあるナンバーのものを
Flex Gridに表示させたいのです。Flex Gridの表示については何とか分かりますが、SQL文が全く分かりません。この場合は7と8のレコードを抽出し、

INDEX    ナンバー      取扱者            OUT              
   7      1001           A            2007/01/01           
   8      1002           B           2007/01/02           

としたいのです。同じナンバーのものに対して取扱者が変わるので最終的なOUTの状態のものが取扱者が違う場合両方とも表示されてしまいます。何か上手な条件指定はないかと考えています。分かりにくい説明で大変申し訳ありませんが、何方かお教えいただければと思います。よろしくお願い致します。


しっかり悩んで、探そう!  2007-01-24 02:50:46  No: 134980

>SQLに関する適当なフォーラムを見つけられなかったので

SQLのフォーラムが見つからなかったから
書いちゃえ〜、じゃなくってさ

探そうよ。
なんか悩んだり、考えたりする時間が根本的に足りないように思います。


あんび  2007-01-24 22:59:43  No: 134981

さらに、INDEX7と8を抽出し・・・で、なぜ
  7      1001           A            2007/01/01           
  8      1002           B           2007/01/02           
になるのでしょうか?
  7      1001           A           2007/01/07
  8      1002           B           2007/01/08
なら、まだ分かりますけど。
で、INDEXの位置付けも不明です。確実に大きい方に新しいデータが入っているとか
規則があるんじゃないですか?
また、
同一ナンバーでINDEXが最大でOUTがNOT NULLのも
みたいに自分で条件を挙げれたらSQLの条件に置き換えたらいいだけです。


大吉末吉  2007-01-24 23:50:23  No: 134982

個人的には、VBに関る(ぎりぎりかすっている)話なので、
この掲示板でも良さげな気はしましたが・・・

> SQLに関する適当なフォーラムを見つけられなかったので、

これが、一言余計でしたね。
ご自分で「VBは関係ない宣言」をしているようなものですから・・・

> 同じナンバーのものに対して取扱者が変わるので
> 最終的なOUTの状態のものが取扱者が違う場合両方とも表示されてしまいます。

せめて、できているSQLぐらい提示して欲しいですね・・・

これって、多分、3段階(サブクエリの入れ子?)でやるんですよね。

(1)IN/OUTのチェック
  IN状態のものを省かなければならないですよね?
  これは、どうやっているんでしょう?
  マンナンバでGroupByをして、IN日付のMAXよりOUT日付のMAXが大きい場合?
  表として、同じ日にIN/OUTをやることがあるんでしょうか?
  もしあるなら・・・IN・OUTのCOUNTでチェック?
  (OUTのカウントがINのカウントと同じならOUT?)
(2)(1)でOUTと判定された、マンナンバーとOUTのMAX日付から
  対象レコードのINDEXを参照
(3)(2)で見つけたINDEXで該当レコードの参照

とか?

#私なら、面倒なので、SQLを3回実行するかも・・・


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加