AccessMDBで、以下のテーブルがあったとします。
テーブル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
このとき、以下のように出力したいのですが
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)
試しにクェリーを作ってみた所、(null)の値を手入力しなければいけないのですが
nullをいれさせるようにするには、どのようにしないといけないでしょうか?
#テーブルをいじることはできず、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;
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
UNIONの後のSELECT文ではテーブル2の値は不要なのではないでしょうか?
これでどうでしょう?
(SELECT テーブル1.NAME, テーブル2.NAME, テーブル2.START, テーブル2.END
FROM テーブル1 LEFT JOIN テーブル2 ON テーブル1.ID=テーブル2.DB1_ID )
UNION
SELECT NAME,null,null,null from テーブル1;
No.3
- 回答日時:
Accessのmdbならこんな感じでSQL発行できませんでしょうか。
SELECT テーブル1.NAME, テーブル2.NAME, テーブル2.開始日, テーブル2.終了日
FROM テーブル1 LEFT JOIN テーブル2 ON テーブル1.ID=テーブル2.DB1_ID
UNION SELECT テーブル1.NAME, (IIf(IsNull(テーブル2.NAME),"Null",テーブル2.NAME)) AS N,(IIf(IsNull(テーブル2.開始日),"Null",テーブル2.開始日)) AS S,(IIf(IsNull(テーブル2.終了日),"Null",テーブル2.終了日)) AS E
FROM テーブル1;
これでほぼ近いと思うのですが。
No.1
- 回答日時:
Insert INTO を用いて別テーブルへ追加すれば可能です。
STEP(1):
TABLE_1 の定義内容が
ID (オートナンバー型) 主キー
DB1_ID (INT型)
氏名(テキスト型)
名称(テキスト型)
開始日(日付・時刻型)
終了日(日付・時刻型)
としてデータを入れます。
STEP(2):
TABLE_2 の定義内容が
ID (オートナンバー型) 主キー
氏名(テキスト型)
としてデータを入れます。
STEP(3):
あらかじめ出力先テーブル(TABLE_3)を作成します。
ID (オートナンバー型) 主キー
氏名(テキスト型)
名称(テキスト型)
開始日(日付・時刻型)
終了日(日付・時刻型)
データは空にしておきます。
STEP(4):
追加クエリ「TABLE_1からTABLE_3作成」という名前で作成します。
INSERT INTO TABLE_3 ( 氏名, 名称, 開始日, 終了日 )
SELECT Table_1.氏名, Table_2.名称, Table_2.開始日, Table_2.終了日
FROM Table_2 LEFT JOIN Table_1 ON Table_2.DB1_ID = Table_1.Id
ORDER BY Table_2.ID;
STEP(5):
追加クエリ「TABLE_1からTABLE_3作成」という名前で作成します。
Insert INTO TABLE_3(氏名, 名称, 開始日, 終了日)
SELECT Table_1.氏名, NULL as 名称,NULL as 開始日,NULL as 終了日
FROM Table_1 where ID in(2,3)
order by ID
後は作成した追加クエリ(STEP(4),STEP(5))を実行すれば結果が TABLE_3 に作成されます。
自動化するにはマクロもしくはVBAを作成する必要があります。
この回答への補足
すみません。
テンポラリ用のテーブルの作成がダメなのも条件です。
#実際に動作するのは非常に大規模なmdbで、テーブル定義等を変更するのはほぼ困難であり、かつ、CREATE の権限が無い状態になっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL mysqlの結合について教えてください 1 2022/05/19 15:13
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- MySQL MYSQL エラー 2 2022/10/18 11:37
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL MySQLのテーブル作成で 自信がありません。 2 2022/08/28 05:35
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのフィルタ抽出が固まる
-
ACCESSのSQLで、NULLかNULLでな...
-
Accessを開きなおすとテキスト...
-
データベースファイル(.db)を開...
-
Excelフィルタ抽出で「検索して...
-
20万行あるデータを動かしたい
-
Accessフォームからパラメータ...
-
データベースとウェブ(WWW)の共...
-
構文エラー:演算子がありませ...
-
「1004:アプリケーション定義...
-
テキストボックスにコントロー...
-
シャープレジスター エラーコード
-
顧客データベースを作る場合、...
-
QRコードとバーコードについて
-
日通NECロジスティクスの追跡サ...
-
Notion@リレーション値の取得...
-
MS access2021で販売管理を作成...
-
エクセル 顧客管理表に担当ごと...
-
最新の日付とその金額をクエリ...
-
FileMaker Pro 10 で令和を表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
警察はスマホに保存した動画や...
-
Accessを開きなおすとテキスト...
-
ACCESSのSQLで、NULLかNULLでな...
-
エクセルのフィルタ抽出が固まる
-
CSVファイルでテキストの改行の...
-
Accessフォームからパラメータ...
-
旧filemakerで和暦(令和など)...
-
ファイルが壊れて読み取れませ...
-
Accessのリンクテーブルについて
-
更新クエリをリンクデータベー...
-
リスト形式の表とデータベース...
-
縦書きテキストボックスの表示"...
-
Notion@リレーション値の取得...
-
汎用カード型のデータベースソ...
-
「1004:アプリケーション定義...
-
構文エラー:演算子がありませ...
-
c言語の問題です。これを踏まえ...
-
20万行あるデータを動かしたい
-
accessでの請求管理について
おすすめ情報