dポイントプレゼントキャンペーン実施中!

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

VB6.0とACCESS2003で開発をしています。
AテーブルとBテーブルの2つありましてAとBは1対Nの関係で整理番号(SNO)でひもづかせています。
現在、Bテーブルを先に貼り付け、貼り付けたBテーブルとSNOが一致するAテーブルの情報を格納するところで行き詰っています。

流れとして、
1.AテーブルをWHERE句を使って絞込み検索
2.Bテーブルを絞り込まれたAテーブルのSNOを基に検索

現在のエラー内容
結合式がサポートされていません
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.流れ1でSNOが5と6だったら2でSNOが5と6の情報を抜き出す

流れ1は検索して、貼り付けまで完了しています。

長くなって申し訳ありません。エラー原因と対処法などを教えて頂けると幸いです。

A 回答 (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が示す内容ではないことに注意)と
 一致している」と言う意味なのでそこがおかしい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/31 14:00

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