- 締切済み
存在しないデータも抽出したい
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です。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- naganaga_001
- ベストアンサー率71% (172/242)
こんな感じでしょうか??? SELECT テーブル1.ID, テーブル1.NAME, テーブル2.NAME, テーブル2.月, テーブル2.開始日, テーブル2.終了日 FROM テーブル1 LEFT OUTER JOIN テーブル2 ON テーブル1.ID = テーブル2.DB1_ID
お礼
イメージ的には、以下の様な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;
補足
この場合ですと 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) になってしまいます><