• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つのテーブルから絞込み検索をして貼り付け)

2つのテーブルから絞込み検索をして貼り付け

このQ&Aのポイント
  • VB6.0とACCESS2003で開発をしています。AテーブルとBテーブルの2つありましてAとBは1対Nの関係で整理番号(SNO)でひもづかせています。現在、Bテーブルを先に貼り付け、貼り付けたBテーブルとSNOが一致するAテーブルの情報を格納するところで行き詰っています。
  • 結合式がサポートされていませんSELECT B.[SNO],[AAA],[BBB] FROM B LEFT JOIN A ON A.[SNO]='rst!SNO'エラー箇所A.[SNO]='rst!SNO'rst!SNOの中身は'5'ですが、VBに書いているコードを載せたのでrst!SNOとしました。
  • やりたいことは、流れ1でSNOが5と6だったら2でSNOが5と6の情報を抜き出すことです。現在は流れ1は完了しており、エラー原因と対処法を知りたいと思っています。

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

  • ベストアンサー
  • sppla
  • ベストアンサー率51% (185/360)
回答No.1

細かいコードの書き方が分からないので(私の想像範囲外のエラーもあるかもしれないので)方向性だけ書きますね。 >現在、Bテーブルを先に貼り付け、貼り付けたBテーブルとSNOが一致するAテーブルの情報を >格納するところで行き詰っています。 流れを見ると、やりたいことは先にAテーブル(1側)を検索し、その検索結果に対応するBテーブル(N側)のデータを取得(読み取りのみで更新しない)したいものと理解します。 ・個別に各テーブルを検索するのではなく、AとBを結合したレコードセットを検索すれば  いいと思います。 ・レコードセットの元のSQLはこんな感じです。(AAA、BBBはBテーブルの項目と想定して  記述しています。またAに対応するBが存在しない場合にキー以外の項目にNULLを返すために  SELECTでの[SNO]はAテーブル側を使用してLEFT JOINとしていますが、それが不要なら  INNER JOINでもかまいません。) SELECT [A].[SNO], [B].[AAA], [B].[BBB] FROM [A] LEFT JOIN [B] ON [A].[SNO] = [B].[SNO] WHERE [A].これ以降にテーブルAの検索条件を記述してください。 ・上記SQLには、処理の必要に応じてORDER BY句を設定して並び替えてください。 >エラー原因 本物のコードを見ていないので確かなことは言えませんが ・SQL文中の ON 以降にテーブルAB間の結合条件が記述されていない。  ここは ON [A].[SNO] = [B].[SNO] のようになると思います。 ・A.[SNO]='rst!SNO' と本当に記述しているなら・・・それは「テーブルAのSNOの内容が  "rst!SNO"という文字列(VBのコード中のrst!SNOが示す内容ではないことに注意)と  一致している」と言う意味なのでそこがおかしい。

zhuque
質問者

お礼

sppla様> 遅れて申し訳ありません。sppla様の回答を基に修正したところ、無事問題が解決しました。 丁寧に書いて頂いたおかげで自分のSQLの間違いにも気づくことができたのでとても勉強になりました。