重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

AcessMDBで困ってます。

例えば、以下のようなデータで(カンマCSVで記述します)

データベース1
ID,NAME
1,おなまえ
2,名前
3,なまえ

データベース2
ID,DB1_ID,NAME,開始日,終了日
1,1,4月,2006/4/1,2006/4/30
2,1,6月,2006/6/1,2006/6/30
3,2,2006年度,2006/4/1,2007/3/31

(データベース1のIDとデータベース2のDB1_IDが関連付けされている)

とあるとき、以下のようにデータを出力したいのですが・・

ID(オートナンバー),NAME,月,開始日,終了日
1,おなまえ,4月,2006/4/1,2006/4/30
2,おなまえ,6月,2006/6/1,2006/6/30
3,おなまえ,(null),(null),(null)
4,名前,2006年度,2006/4/1,2007/3/31
5,名前,(null),(null),(null)
6,なまえ,(null),(null),(null)

そして、where条件として、
2006/4/1が選択された場合
1,おなまえ,4月,2006/4/1,2006/4/30
2,名前,2006年度,2006/4/1,2007/3/31
3,なまえ,(null),(null),(null)

2006/7/1が選択された場合
3,おなまえ,(null),(null),(null)
2,名前,2006年度,2006/4/1,2007/3/31
3,なまえ,(null),(null),(null)

2007/4/1が選択された場合
3,おなまえ,(null),(null),(null)
2,名前,(null),(null),(null)
3,なまえ,(null),(null),(null)

このような場合、どのようなSQLをかけばよろしいでしょうか?

言語はVS2003 VB.NET + AccessMDBです。

よろしくお願いします。

A 回答 (1件)

こんな感じでしょうか???



SELECT
テーブル1.ID,
テーブル1.NAME,
テーブル2.NAME,
テーブル2.月,
テーブル2.開始日,
テーブル2.終了日
FROM
テーブル1 LEFT OUTER JOIN テーブル2
ON テーブル1.ID = テーブル2.DB1_ID

この回答への補足

この場合ですと

1,おなまえ,4月,2006/4/1,2006/4/30
2,おなまえ,6月,2006/6/1,2006/6/30
3,名前,2006年度,2006/4/1,2007/3/31
4,なまえ,(null),(null),(null)

になってしまいます><

補足日時:2006/06/03 16:39
    • good
    • 0
この回答へのお礼

イメージ的には、以下の様なSQLですが、Accessだとダイヤログで空値を入力する必要があり、VB上だとエラーになってしまいます。

NULL値をDBをいじらずSQLだけで挿入する方法が必要なようです。

SELECT テーブル1.NAME, テーブル2.NAME, テーブル2.START, テーブル2.END
FROM テーブル1 LEFT JOIN テーブル2 ON テーブル1.ID=テーブル2.DB1_ID
UNION SELECT テーブル1.NAME, テーブル2.NAME,テーブル2.START,テーブル2.END
FROM テーブル1;

お礼日時:2006/06/03 17:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!