- - PR -
sqlについて
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-06-17 12:57
はじめまして。どうしても自分では解決できないので、
どなたかSQLに詳しい方がいらっしゃったら 教えていただけないでしょうか? 以下、二つのテーブルがあります。 ■店番マスターテーブル 店No 店名 00001 AAA 00002 BBB 00003 CCC 00004 DDD 00005 EEE 00006 FFF ■確認日テーブル 店No 店名 年月 確認日 00001 AAA 200604 20060401 00005 EEE 200604 20060405 00004 DDD 200604 20060407 00002 BBB 200604 20060403 00003 CCC 200604 20060402 00006 FFF 200604 20060401 00002 BBB 200605 20060501 00005 EEE 200605 20060503 00004 DDD 200605 20060502 取り出したい結果 店No 店名 年月 確認日 00001 AAA 200604 20060401 00002 BBB 200604 20060403 00003 CCC 200604 20060402 00004 DDD 200604 20060407 00005 EEE 200604 20060405 00006 FFF 200604 20060401 00001 AAA 00002 BBB 200605 20060501 00003 CCC 00004 DDD 200605 20060502 00005 EEE 200605 20060503 00006 FFF 月に1回,店ごとにある確認を行っていて 確認すると確認日テーブルに記録が残ります。 (上の確認日テーブルには4月と5月の記録しか書きませんでしたが・・) 取り出したい結果は2か月分の店番号、店名、年月、確認日なのですが 5月にはまだ確認ができていない店もあるので、その場合年月と確認日は空白にします。 こういう風に結果を取り出すためのsqlを書くことは可能でしょうか・・? | ||||||||
|
投稿日時: 2007-06-17 16:07
使用するRDBMSとそのバージョンは?
各列のデータ型も、念のため示してください。 | ||||||||
|
投稿日時: 2007-06-17 20:36
まず、確認日テーブル に 店名 は不要と思います。
CROSS JOIN が使えれば、INNER JOIN の代わりに使えると思います。 [ メッセージ編集済み 編集者: とんくま 編集日時 2007-06-20 23:54 ] | ||||||||
|
投稿日時: 2007-06-17 22:34
返信ありがとうございます。
参考になります。 >忠犬さん Oracle10i データ型はすべてVARCHARです ちなみに、取り出した結果から さらに特定の店番のデータのみを取り出す場合 また、5月に確認日がない(空白になっているもの)のみを取り出す場合はどうすればいいでしょう? 別にSQLを考えたほうがいいでしょうか? | ||||||||
|
投稿日時: 2007-06-19 01:47
インラインビューについて調べてみれば、幸せになれるかもしれません。 | ||||||||
|
投稿日時: 2007-06-19 18:27
ちなみに、取り出した結果から
さらに特定の店番のデータのみを取り出す場合
また、5月に確認日がない(空白になっているもの)のみを取り出す場合はどうすればいいでしょう? 別にSQLを考えたほうがいいでしょうか?
| ||||||||
|
投稿日時: 2007-06-19 20:39
これだと、全ての店がまだ未確認の時は年月が取れません。 質問者の仕様によりますが、年月のみのテーブルを別に持つのも良いと思います。 50年分持ってもたった600レコードですし。 一時テーブルでも良いです。 | ||||||||
|
投稿日時: 2007-06-20 00:35
> これだと、全ての店がまだ未確認の時は年月が取れません。
> 質問者の仕様によりますが、年月のみのテーブルを別に持つのも良いと思います。 > 50年分持ってもたった600レコードですし。 > 一時テーブルでも良いです。 そもそも、(質問者の仕様によりますが) 1)今の時点(例えば、200706)における未確認の 店No を知りたいのでしょうか? 2)あるいは、指定した年月における未確認店の情報が知りたいのでしょうか? もし、1)あるいは 2)ならば、(質問者の使っている DBMSが Oracle ということですが、私はOracleに詳しくないので間違っているかもしれませんので、そこのところはご勘弁下さい。なんらかのヒントになれば幸いです。)、以下で可能と思います。 逆に、確認日テーブルにあるデータでの最新年月における未確認 店No を知りたいのであれば私の直前の書き込みのSQL文が適当と思います。 1)
2)
[ メッセージ編集済み 編集者: とんくま 編集日時 2007-06-20 00:39 ] | ||||||||
1
