• ベストアンサー

ACCESS n対nのデーターを結合したいのですが・・・。

お知恵をかしてください。 Aテーブル No   商品名  金額 1     AAA  1,111 3     CCC1  3,333 3     CCC2  3,333 5     EEE  5,555   Bテーブル No   商品名    金額 1    AAAAA   11,111 2    BBBBB   22,222 4    DDDDD   44,444 5    EEEEE1   55,555 5    EEEEE2  55,555 をNOで結合して Cテーブル AかBNo A商品    A金額     B商品   B金額 1     AAA    1,111    AAAAA  11,111 2     ブランク           BBBBB  22,222 3     CCC1    3,333    ブランク 3     CCC2    3,333    ブランク 4     ブランク          DDDDD   44,444 5     EEE     5,555   EEEEE1  55,555 5     ブランク          EEEEE2  55,555 というテーブルを作成したいのですが、(AテーブルBテーブルのNoが一緒だったら1行目は行を1行にしたい。)ということは可能でしょうか? 詳しい方教えてください。

noname#22811
noname#22811

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

Aテーブルを T1、BテーブルをT2、とし [No] を [ID] とすると(No はAccessの予約語なので) 下記を新たなクエリのSQLビューに貼り付けてデータシートビューで見ると 両テーブルに含まれる番号だけの一覧がでてきます。 これを、Q1 とします select ID from T1 union select ID from T2; でこのクエリを元にして。 もう1個新たなクエリを作ります。 先ほどのQ1とT1、T2 を入れて Q1.ID ---→T1.ID    \--→T2.ID のように結合線を引くとお望みの結果になるのでは?     クエリ一発なら下記のSQLで行けないかな? SELECT T0.ID, T1.商品名, T1.金額, T2.商品名, T2.金額 FROM ([select ID from T1 union select ID from T2]. AS T0 LEFT JOIN T1 ON T0.ID=T1.ID) LEFT JOIN T2 ON T0.ID=T2.ID;

noname#22811
質問者

お礼

ご回答ありがとうございます。 希望通りできました! 本当にありがとう御座います! (前々から、これができたら楽だと思ってたので・・・) 今後も、いろんなことに応用させていただきます★

その他の回答 (3)

回答No.3

UNIONでやっちゃうとうまくいかないですね… すみません。 きっとSQL1発ででうまく行くやり方ありますが めんどうな感じになりそうなので後者のLOOPで テーブルAの値があるなしでの条件分岐で 1個ずつ見てく方がよいかも。

noname#22811
質問者

補足

ご回答ありがとうございます。 SQLは面倒・・・なんですね・・・。 上記の方法だと、excelでのVBAの方が良さそうですね。 素人なので、accessのSQLで何となく出来そう!と思ったんですが、 excelでやった方が良いということが判って良かったです。

回答No.2

一番簡単なのはクエリで クエリ1:A→B と クエリ2:B→A を作ってクエリ3で SELECT * FROM クエリ1 UNION SELECT * FROM クエリ2 と結合しちゃえば出来ますよ。 テーブルに書き込むなら loopでまわして一個ずつdlookupとかで探すとか…

回答No.1

可能ですよ。 なんで新しいテーブルを作るのかは疑問ですが… (表示可能な場合はテーブルを作らないのが原則) ただSQL一発でやろうとすると結構複雑になるかも。 どのような手法でやりたいですか?

noname#22811
質問者

補足

ご回答ありがとうございます。 質問には載せてなかったのですが、NOに複数の枝番がある形なんです。 1-1、1-2、1-3・・・・2-1、2-2・・・のような感じで・・・ Aテーブル、Bテーブルそれぞれ枝番の数は決まってないです。 結果n対nになるんです。(集計は枝番付きのNOは別フィールドにしています。) やり方は、SQLまたは、VBAが良いのですが、(ACCESSのクエリ機能でも・・・)簡単な方法があれば、 ご回答いただきたいです。

関連するQ&A

  • テーブルAにあって、テーブルBにないデータ抽出

    このようなデータのテーブルがあります。 テーブルA key ID ----------------- 1 AAAAA 2 BBBBB 3 CCCCC 4 DDDDD 5 EEEEE 6 FFFFF 7 GGGGG 8 HHHHH 9 IIIII テーブルB key ID ----------------- 1 AAAAA 2 CCCCC 3 EEEEE 4 FFFFF 5 HHHHH 6 IIIII 7 JJJJJ 8 KKKKK 9 LLLLL この場合テーブルAのIDの中で、テーブルBのIDには存在しない行を取り出すのに、プログラムを使わずに取得する方法はありますか? この例だと取得するはずの行は key ID ----------------- 2 BBBBB 4 DDDDD 7 GGGGG になります。 どうかよろしくお願いします。

    • ベストアンサー
    • MySQL
  • 【Excel2007】A列の値がB列に存在しないことを確認したい

    いつもお世話になっております。 Excel2007を使用しております。 次のような一覧があります。 A列   B列 aaaaa aaaaa bbbbb bbbbb ccccc ddddd ddddd fffff eeeee A列にはあるが、B列にはない値を取得したいと 思っております。 この例であれば、「ccccc」と「eeeee」を抜き出したいのです。 何か関数などで抜き出す方法がございましたら、 教えて頂けませんか? A列、B列ともに2000行程度あるため、調査に苦労しています。 ぜひよろしくお願いいたします。

  • シーケンシャルアクセスについて

    シーケンシャルアクセスについて教えてください。 テキストファイルの内容が... *************************************************** aaa bbb ccc ddddd eeeee aあ  bbb ccc ddddd eeeee *************************************************** 空白の部分(aとbの間)にはタブが入っています このテキストファイルをアクセス2000において テーブルにインポートする場合 Open...AS #1 'テキストオープン set ... 'データベース・テーブルオープン input #1 rireki Mytable![項目名] = Mid(rireki, 1, 3) 上のような感じでテキストのデータをテーブルに取り込もうとすると 2行目の"aあ"の"あ"が全角なので"aあ"以外の空白も取り込んでしまいます どうすれば全角を半角2桁として取り出すことが出来ますか? 宜しくお願い致します。

  • 秀丸のマクロでカラムごとの処理

    aaaaa,bbbbb,ccccc,ddddd,eeeee 上記のようなCSVファイルで、2カラム目のbbbbbと 4カラム目のdddddの文字を変換するという場合 どういったマクロになりますでしょうか? よろしくお願いします。

  • ファイルを移動するためのバッチファイル

    テキストファイル(1行に1つのファイル名が書かれていて、ファイルの数だけの行があるテキスト)を読み込み それをもとに、パス指定した参照先ディレクトリより、1つずつファイルを取得し、 パス指定した保存先ディレクトリに保存していくという、ファイルを移動(コピー)するためのバッチファイルを作りたいのですが どのようなコマンドを記述すればよいでしょうか? (できれば、MS-DOSのバッチファイルだと助かります) 例 [list.txt] aaaaa bbbbb eeeee [参照先] aaaaa bbbbb ccccc ddddd eeeee ↓ [保存先] aaaaa bbbbb eeeee

  • MySQLで同じデータにフラグ付け出来ますか?

    データベースの初心者です。MySQLを使用してSQL文を試しましたが、うまくいきません。 わかりやすく教えていただけますか? 下のような2つのテーブルで、テーブル2の項目カラムに存在するデータが、 テーブル1の区分にあれば、一致する行(NOカラムの5~7)だけに、 フラグ”1”を付けたいのです。(区分カラムに、"*"で始まるデータは除きます) 区分に、データが全て埋まっていれば簡単に出来るのですが、 先頭行のみデータがあって、次の区分まで、Nullが入っています。 テーブル1 NO 区分 フラグ 1  aaaaa   null 2  null     null 3  null     null 4  null     null 5  bbbbb   null 6  null     null 7  *nozoku  null 8  ccccc null 9  null null テーブル2 NO 項目 1  bbbbb 2  eeeee よろしくお願いします。

    • ベストアンサー
    • MySQL
  • テーブル結合のSQL文について

    はじめまして、よろしくお願いします。 テーブルA、B、Cから情報を取得し、下記のSELECTイメージを表示させたいのですが、 どのようなSQLを記述すれば良いのかわからず、困っております。 どなたかご教示頂けますでしょうか。 SELECTイメージ  日付      キー  ------------ -------------  9/1      AAAAA  9/1      CCCCC  9/2      AAAAA  9/2      CCCCC  9/3      AAAAA  9/3      BBBBB  9/3      CCCCC  9/4      AAAAA  9/4      BBBBB  9/4      CCCCC テーブルA  日付      キー  ------------- -------------  8/31      AAAAA  8/31      CCCCC テーブルB  日付      キー  ------------ -------------  9/1      AAAAA  9/3      BBBBB  9/4      CCCCC テーブルC  日付  -------------   ・   ・   ・   8/31   9/1   9/2   9/3   9/4   9/5   9/6   ・   ・   ・

  • excelデータの斜めの文字行の抽出

    excelデータの斜めの文字行だけを絞りこんだり、抽出することはできんるのでしょうか。 例) 行NO. 001     AAAAA 002    BBBBB <=ここがexcelでは斜めになっている 003 CCCCC 004 DDDDD <=ここがexcelでは斜めになっている 結果 002    BBBBB 004 DDDDD VBAとかでも構いません。 宜しくお願いします。

  • VBAでマクロを作りたいのですが、、、困ってます

    1問目に答えた人で2問目に答えた人は何人いたか・・・ 2問目で初めて答えた人は何人いたか・・・・というのを計算させたいです。 たとえば(1)のデータがあった時に、(2)のデータのように変換したいとしたらどのようなVBAマクロにすればよいのでしょうか。 (1) 質問No,回答者, 1,AAAAA 1,BBBBB 1,CCCCC 1,AAAAA 2,AAAAA 2,BBBBB 3,AAAAA 3,DDDDD (2) 1 2 3 ←回答回数 1問目 3 2 1 2問目 0 0 3問目 1 上の結果ですが、 1問目で1回目に答えたのはAAAAA,BBBBB,CCCCCの3人、 1問目に答えて2問目に答えたのは、AAAAA,BBBBBの2人、 そのまま2問目に答えた人で3問目にも答えたのはAAAAAの1人、 2問目で初めて答えた人、その中で2問答えたのは0人 3問目で初めて答えた人は、DDDDDの1人 のような表を意味しています。 データは2万行ほどあるので、VBAで処理しなければならないと考えています。 ほかにも何か方法があれば教えていただけると助かります。 どうぞよろしくお願いします。

  • Excelで同一のデータを抽出して横並びに

    A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  ccc     4 bbb      12  ddd     6 ccc     10  aaa     22 ddd     6   eee     10 eee     5   bbb     7 fff       8 kkk 9 kkk 7 lll 4 上記のようなデータを 以下のように同じ商品コードを横並びに表示させたいのですが どういったcountifとかで試したのですが上手くいかず、どのような関数を使えば可能でしょうか? A     B  C     D 商品コード 注文数  商品コード 注文数 aaa     15  aaa     22 bbb      12  bbb     7 ccc     10  ccc     4 ddd     6   ddd     6 eee     5   eee     10 fff       8 kkk 7 kkk 9 lll 4 宜しくお願い致します。