ExcelのVBAでシートへのデータの表示を行っています。
1つ目のSQLはIDとNameを取得しています。
2つ目のSQLはIDとresultを取得しています。
SQLの取得する条件(where句以降)が異なるので別々で取得しないといけないと思っております。また、2つ目のSQLはIDは同じでもresultが異なる複数のデータが取得できています。
1つ目のSQLで取得したデータはそのままExcelのシートに表示しています。
2つ目のSQLを投げた際に1つ目のSQLの中のIDと紐づくデータのみ1つ目のSQLで表示したExcelの行に横につなげたいと思っています。
そこで1つ目のSQLのIDと2つ目のSQLのIDを取得してチェックを行いたいのですが、実装方法が分かりません。
以下実装方法です。
VBA
1Set myCon = New ADODB.Connection 2myCon.Open DSN=DB接続情報 3 4・1つ目のSQL 5SQL = "SELECT ID, NAME FROM test INNER JOIN ~~ WHERE ~~" 6~~~ExcelシートのB行にID、C行にNameの書き込みの処理~~~ 7 8 9・2つ目のSQL 10Dim SQL As String 11Set myRS2 = New ADODB.Recordset 12SQL = "SELECT ID, RESULT FROM test INNER JOIN ~~ WHERE ~~ " 13myRS2.ActiveConnection = myCon 14myRS2.Source = SQL 15 16Range("B2").Select 17 18以下の記述方法が分からない。 19
恐らくB行のデータを空の行までループして値を取得→1つ目のSQLで取得しB行に表示されているIDを2つ目のSQLで取得したIDが同一かのチェックの実装→同一であれば紐づいたIDと同じ行にデータを繋げる
の実装かなとは思っています。
2つ目のSELECT文実行時の取得されるデータ
ID | result |
---|---|
200 | AAA |
200 | BBB |
1つ目のSELECT文実行後のExcelシート
A | B(ID) | C(name) |
---|---|---|
1 | 100 | test |
2 | 111 | data |
3 | 200 | aaa |
完成イメージ図
|A|B(ID)|C(name)|D(result)|
|:--|:--:|--:|
|1|100|test||
|2|111|data||
|3|200|aaa|AAA|
|3|200|aaa|BBB|
追記
DBはPostgresです。
完成イメージ図のAの3の行はA,B,Cはセル結合されるものであり、Dのみ単体です。
回答1件
あなたの回答
tips
プレビュー