前提・実現したいこと
注文親テーブルと注文子テーブル(色別に色番号と色名と色数)があり、
注文親テーブルの注文IDごとに、注文子テーブルの各項目を横にならべるようにして、
ADOでレコードセットを取得してユーザフォームのリストボックスに表示させたいです。
色は最大7個あります。
発生している問題・エラーメッセージ
子テーブルの本数だけなら、SQLでできましたが、色番・色名も横持ちにしたい場合どうすればいいかわかりません。
該当のソースコード
CREATE TABLE 注文親テーブル(注文ID NUMBER,品名 CHAR); CREATE TABLE 注文子テーブル( 注文子ID NUMBER, 注文ID NUMBER, 注文番号子 NUMBER, 色番 CHAR, 色名 CHAR, 色本数 NUMBER ); INSERT INTO 注文親テーブル (注文ID,品名) VALUES (1,'あああ'); INSERT INTO 注文親テーブル (注文ID,品名) VALUES (2,'いいい'); INSERT INTO 注文親テーブル (注文ID,品名) VALUES (3,'ううう'); INSERT INTO 注文子テーブル (注文子ID,注文ID,注文番号子,色番,色名,色本数) VALUES (101,1,1,'BK','ブラック',20); INSERT INTO 注文子テーブル (注文子ID,注文ID,注文番号子,色番,色名,色本数) VALUES (102,1,2,'GY','グレー',30); INSERT INTO 注文子テーブル (注文子ID,注文ID,注文番号子,色番,色名,色本数) VALUES (201,2,1,'BR','ブラウン',40); INSERT INTO 注文子テーブル (注文子ID,注文ID,注文番号子,色番,色名,色本数) VALUES (202,2,2,'G','ゴールド',6); INSERT INTO 注文子テーブル (注文子ID,注文ID,注文番号子,色番,色名,色本数) VALUES (203,2,3,'BL','ブルー',100); INSERT INTO 注文子テーブル (注文子ID,注文ID,注文番号子,色番,色名,色本数) VALUES (301,3,1,'CA','キャメル',5); INSERT INTO 注文子テーブル (注文子ID,注文ID,注文番号子,色番,色名,色本数) VALUES (302,3,2,'BL','ブルー',100);
色本数のみ横持ちのSQL
TRANSFORM sum(色本数) SELECT 注文ID,sum(色本数) FROM 注文子テーブル GROUP BY 注文ID PIVOT 注文番号子
試したこと
他のデータベースだとwhen句を使っていそうだとわかりましたが、VBAだと使用できません。
SQLだけで解決できるのでしょうか?
その場合 SELECT 注文ID,色番,色名,色本数 FROM [注文子テーブル$] WHERE 注文番号子 = 1’各色ごと
で各色ごとにクエリを作成してjoinさせる方法でしょうか?
ただ7色あるので、大変だなと思っており、ほかの方法があれば教えていただきたいです。
どうぞよろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
データもエクセルで保存して、エクセルでSQLを実行しています。
バージョンは2019です。
回答2件
あなたの回答
tips
プレビュー