これ何て呼びますか

データベースの勉強を始めたばかりの者です。宜しくお願いいたします。
既存のAccessのデータベース(XXX.accdb)をVisualBasic2017で読み込み制御したいと思い勉強してい

ます。NameTableとNamaeTableが次のような構造であった場合に、欲しいデータ形式で
取得する方法を教えて頂きたいのですが、どなたか詳しい方いらっしゃいますでしょうか?
宜しくお願い致します。


NameTable
ID | Name | Field
01 | 岡田 | Namae1
02 | 山田 | Namae2
03 | 桜井 | Namae3
04 | 林田 | Namae4
05 | 栗林 | Namae5

NamaeTable
ID | Namae1 | Namae2 | Namae3 | Namae4 | Namae5
ID | 太郎 | 隆二 | 健一 | 武 | 広美

欲しいデータ形式
ID | Name | Filed
01 | 岡田 | 太郎
02 | 山田 | 隆二
03 | 桜井 | 健一
04 | 林田 | 武
05 | 栗林 | 広美

質問者からの補足コメント

  • へこむわー

    NamaeTableのIDフィールドのRow(O)は、01でした。(誤記)

      補足日時:2018/05/04 10:12

A 回答 (2件)

先の方が回答されている通り、テーブルの設計が良くないです。


1カラムずつ取り出したものをUNIONでまとめて、それと結合するぐらいしか思いつきません。
下の例はSQLiteでは動きましたが、Accessのデータベースで動くかどうかはわかりません。

SELECT
NameTable.ID, NameTable.Name, NamaeTableTrans.Field
FROM
NameTable
LEFT JOIN
(
SELECT 'Namae1' AS ColumnName, Namae1 AS Field FROM NamaeTable
UNION SELECT 'Namae2' AS ColumnName, Namae2 AS Field FROM NamaeTable
UNION SELECT 'Namae3' AS ColumnName, Namae3 AS Field FROM NamaeTable
UNION SELECT 'Namae4' AS ColumnName, Namae4 AS Field FROM NamaeTable
UNION SELECT 'Namae5' AS ColumnName, Namae5 AS Field FROM NamaeTable
) NamaeTableTrans
ON NameTable.Field = NamaeTableTrans.ColumnName
;
    • good
    • 0
この回答へのお礼

早速のご指導ありがとうございます。
DBの構造が部分的で、実は、フィールドの数が変動します。
ご丁寧にサンプルまで書いて頂いたおかげで、データベース側の処理ではなく、ソフト側で処理する必要がありそうなことが判りました。
また、勉強してわからないことがあればご指導のほどよろしくお願いいたします。

お礼日時:2018/05/04 14:15

既にこのようなDBがあるのですか?


根本的にRDBの設計から間違ってます。
    • good
    • 0
この回答へのお礼

早速のご指導ありがとうございます。
このような構造になっているDBがあり、それを活用しようと考えています。
DBの出所は、詳しく言えませんが、大手出版社が販売している株式データなので一括で変換する方法があるのかと思って、質問させて頂きました。
多分?私の使い方が間違っているのだと思います。
抽出結果を配列に取り込んで、処理してみます。
ありがとうございました。

お礼日時:2018/05/04 14:07

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