それで、MS Access の問題を抱えてまた戻ってきました。データが既に存在するかどうかを確認するサブクエリを含む INSERT INTO クエリがあります。
SELECT name, course
FROM foo
WHERE (name, course) NOT IN (SELECT name, course FROM bar);
上記が機能しないため、私が達成しようとしていることについて少し説明します。
テーブル バーにまだ存在しない複合キーを選択しようとしています。たとえば、次の内容をテーブル バーに格納できます。
"John Doe" , "Calc 101"
"John Doe" , "English"
"Jane Doe" , "Calc 101"
そして、以下はテーブル foo にある可能性があります:
"John Doe", "Calc 101"
"John Doe", "Science"
クエリは次を返す必要があります。
"John Doe", "Science"
私が見たどこでも、上記が機能すると言い、理論的には機能すると確信しています。私が遭遇する問題はMS Accessにあります...このクエリを実行しようとすると、サブクエリが複数のフィールドを返すことを示すポップアップが表示されます。確かに、それは私がやりたいことであるため、他の2つのフィールドを比較できる2つのフィールドを返す必要があります。上記の 2 つのフィールドは、私の "bar" データベースの複合キーです。
背景の詳細については、MS Excel 2007 と MS Access 2007 を使用しています。Excel を使用してデータを入力し、VB スクリプトを介してクエリを実行しています。MS Access を開いて主キーの追加に関するエラー メッセージを吐き出し、クエリを実行せずに閉じるというエラーが発生したため、最終データベースに既にあるフィールドをチェックするサブクエリを作成しようとしています。<-- 複合キーのため、これは予想されることです。