- ベストアンサー
WHERE句に複数テーブルを使いたい時の方法
- WHERE句に複数テーブルを使いたい時の方法について解説します。
- Access 2010を使用している場合、以下の手順でWHERE句に複数テーブルを組み合わせることができます。
- テーブルAとテーブルBを結合し、特定の条件を満たすデータのみを抽出するためには、SELECT文とJOIN句を組み合わせて使用する方法があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
補足ありがとうございます。 > E | 2 <追加 これが何で追加されるのか分かりませんでしたが、それを外して考えると↓の様に思えるのですがどうでしょうか? 「テーブルBのF2がTrueの行のF1の値について、テーブルAのF1がその値でF2が1の行が存在しない場合は、それを挿入する」 もし、こうであれば、下記の様なSQLなるかと思います。 なお、手元にACCESSが無いのでACCESSで実行できるかは未確認です。 ---------------------------------------- INSERT INTO テーブルA(F1, F2) SELECT テーブルB.F1, 1 FROM テーブルB WHERE F2 = True AND NOT EXISTS (SELECT * FROM テーブルA WHERE テーブルA.F1 = テーブルB.F1 AND テーブルA.F2 = 1); ----------------------------------------
その他の回答 (1)
- root139
- ベストアンサー率60% (488/809)
結合か相関サブクエリを使えば出来るかと思いますが、やりたいことが今一つ見えません。 例えば、下記の状態だった場合はどんなデータをINSERTしたいのでしょうか? テーブルA F1 | F2 ---+----- A | 1 A | 2 B | 1 B | 2 C | 2 X | 1 テーブルB F1 | F2 ---+----- A | true B | false C | true D | false E | true >・テーブルAのF1にテーブルBのF2がない テーブルAのF1は文字列でテーブルBのF2はブール値なので奇妙な気がしますし、例示されているSQLにも該当する箇所は有りません。「テーブルAのF1にテーブルBのF1がない」の間違えでしょうか?
補足
テーブルA F1 | F2 ---+----- A | 1 B | 1 X | 1 A | 2 B | 2 C | 2 テーブルB F1 | F2 ---+----- A | true <対象 B | false C | true <対象 D | false E | true <対象 SQL 結果 テーブルA F1 | F2 ---+----- A | 1 B | 1 X | 1 C | 1 <追加 E | 1 <追加 A | 2 B | 2 C | 2 E | 2 <追加 >「テーブルAのF1にテーブルBのF1がない」の間違えでしょうか? はい、間違えました。ごめんなさい。 相関サブクエリ?検索してみます。
お礼
希望とする結果が得られました。 SQLは不勉強で、ここまで複雑(?)だと理解できませんし、自分では解決不可でした。 感謝致します。 > E | 2 <追加 に関しては、 テーブルA[F2]が1の場合、2の場合・3の場合があって 同様な処理を行うということでした。 ありがとうございました。 今後もよろしくお願い致します。