• 締切済み

ACCESSで他テーブルから複数の値を検索したい

WINDOWS XP MSACCESS2003です。 以下、DDDテーブルの中からAAAテーブルのIDOと一致するものを DDDテーブルの項目種類と同様に全件抽出したいのですが、 どのようにすれば宜しいでしょうか?ご教示願います。 いろいろ検索したのですが、うまくいかなくて困っています。 (1)テーブル名:DDD 項目:SOFU_COD、IDO、TEL レコード件数18万件 (2)テーブル名:AAA 項目:IDO レコード件数47件

みんなの回答

回答No.3

普通に内部結合でいけるんじゃないか? select DDD.SOFU_COD, DDD.IDO, DDD.TEL from DDD inner join AAA on DDD.IDO = AAA.IDO

noname#192382
noname#192382
回答No.2

18万件をアクセスが扱えるか分かりませんが、一応お答えします。 二つのてーぶるの間にIDOを使ってリレーションを組みます。 結合の種類はAAAのテーブルの全データとそれに合うDDDのデータをつなぐことにして、二つのテーブルの選択クエリーを実行すれば希望のものが得られるはずです。

jjmmyy
質問者

お礼

回答頂き、ありがとうございます。 DDDのテーブルに項目を追加し、すべてに同一のフラグのような値を 設定してAAAのテーブルにフラグを表示することはできました。 ただ、当初のDDDのテーブルの値のみで、リレーションによる 設定がわかりません。当方の勉強不足でしょう・・・もう少し調べて みることにします。 ...

回答No.1

こんばんは。 Accessでできるのかな? select * from DDD where exists(select 'X' from AAA where AAA.IDO = DDD.IDO) これでダメですかね?

jjmmyy
質問者

お礼

回答頂き、ありがとうございます。 しかしながら、出力することができませんでした。 'X' を*(アスタリスク)にしたのですが、該当するものをすべて 出力するようにはなりませんでした。AAA.IDOについて子画面で 求められるよう表示されてしまいました。

関連するQ&A

  • SQLについて

    レコード1 |レコード2 |レコード3 AAA |1111 |0000 BBB |1111 |0000 CCC |2222 |2222 CCC |3333 |2222 CCC |4444 |2222 上記のようなテーブルがあった場合、レコード1のAAAとBBBは値をそのまま抽出し レコード1のDDDはレコード2とレコード3の値が一致しているものを抽出したいのですが ひとつのSQLで実現することは可能でしょうか? レコード2とレコード3の値が一致しているものを抽出だけなら簡単にできそうなのですが AAAとBBBもというところで悩んでます。どうかご教授ください。

  • Access テーブルを繋げたり、文字を抜き出したりしたい

    Access2003です。 Aテーブル Bテーブル Cテーブル 名前    ランク   備考 あああ   AAA     ABC いいい   BBB     DEF ううう    CCC     GHI えええ   DDD     JKH ※フィールド数は、各テーブルに1つのみ とあります。 これをクエリで編集したいのですが、行いたいことが2点 1)1文字挿入して繋げる AテーブルとBテーブルを繋げるのですが、間に1文字挿入したいです。 「あああ~AAA」 と、「~」を挿入 2)1文字だけ抜き出す Cテーブルの真ん中の1文字だけ抜き出す 1レコード目だと、「B」だけ抽出 基本的な操作かもしれませんが、出来ません。

  • テーブル内のレコードを別のテーブルに移す良い方法を教えてください

    SQLサーバー7.0(ADO)とAccess97のVBAでアプリケーションの開発を行っております。SQLサーバー7.0(サーバー側)にあるテーブルの中身(レコード全件)をAccess97(ローカル)にあるテーブル(テーブル名とその中のフィールド名は全く同じだが中身はからっぽ)にまとめて移しかえる良い方法があれば教えてください。いま私はフォームオープンイベントでフィールドとレコードをループでまわして移しかえているのですが、テーブル数も多いため記述も長くなりますし、何よりもパフォーマンスが良くありません。テーブル単位で中身を別のテーブルに移す方法などがあれば是非教えてください。 (例) SQLサーバー(ホスト側)---テーブル名「T_社員マスター」フィールド数100項目、レコード数500件 ↓ ↓ フォームオープン時にそのまま移しかえたい ↓ ↓ Access97(端末側)-------テーブル名「T_社員マスター」フィールド数100項目、レコード数0件 よろしくお願いします。

  • Access2002での複数項目検索について

    教えてください。 Access2002でデータベースを作っています。 ふたつのテーブルから選択クエリを作成、そのクエリ内で部分一致のパラメータを設定し、 複数項目(5つ)の検索を行っていましたが、検索のたびに毎回5つのダイアログボックスを クリア(必要項目を入力、入力しないパラメータは「OK」でとばす)するのがめんどくさいと 使用者にいわれ、検索フォームからの検索に変えたいと思っています。 その場合、  (1)選択クエリを基としたフォームを新規作成し、  (2)非連結のテキストボックスを5つ作り、それぞれ適当な名前を付け、  (3)クエリの抽出条件の欄の現在パラメータ設定をしているところを、       [Forms]![フォーム名]![テキストボックス名]に変える だけではできないのでしょうか。。 いろいろWeb上で調べたり、本を読んで見よう見まねでつくってみましたが、出来上がった フォームから検索ボタン(「クエリの実行」ボタン)を押しても、全件が表示されてしまうの です。 パラメータではできているのに・・・。 どなたか、ご教示くださるとうれしいです。 よろしくお願いいたします。

  • ACCESS VBA 2つのテーブルから抽出

    ACCESS VBA初心者です 見よう見まねで作成してみたのですが、デバックになってしまい先に進めません どなたか、どこがどう違うのか教えてください テーブル1とテーブル2の15項目ほどをぶつけて 一致しないレコードを抽出し、その抽出したレコードを既存のテーブル3にコピーをしたいのですが、その方法がわかりません Sub QQ() Dim DB As DAO.Database Set DB = CurrentDb() DB.Execute "DELETE * FROM テーブル3;" Dim strSQL As String strSQL = "INSERT INTO テーブル3 ( AAA, BBB, CCC, DDD, EEE, FFF, GGG, HHH, III, JJJ ) " strSQL = strSQL & " SELECT テーブル1.AAA, テーブル1.BBB, テーブル1.CCC, テーブル1.DDD, テーブル1.EEE, テーブル1.FFF, テーブル1.GGG, テーブル1.HHH, テーブル1.III, テーブル1.JJJ, FROM AAA;" DB.Execute strSQL Dim TB_テーブル2 As DAO.Recordset Dim TB_テーブル3 As DAO.Recordset Set TB_テーブル2 = DB.OpenRecordset("Select * from テーブル2;") While TB_テーブル2.EOF = False Debug.Print TB_テーブル2![AAA] Debug.Print TB_テーブル2![BBB] Debug.Print TB_テーブル2![CCC] Debug.Print TB_テーブル2![DDD] Debug.Print TB_テーブル2![EEE] Debug.Print TB_テーブル2![FFF] Debug.Print TB_テーブル2![GGG] Debug.Print TB_テーブル2![HHH] Debug.Print TB_テーブル2![III] Debug.Print TB_テーブル2![JJJ] strSQL = "SELECT テープ3.* FROM テーブル3 " strSQL = strSQL & "WHERE (((テーブル3.AAA)='" & TB_テーブル2![AAA] & "') " ←デバックヵ所 strSQL = strSQL & " AND ((テーブル3.BBB)='" & TB_テーブル2![BBB] & "') " strSQL = strSQL & " AND ((テーブル3.CCC)='" & TB_テーブル2![CCC] & "') " strSQL = strSQL & " AND ((テーブル3.DDD)='" & TB_テーブル2![DDD] & "') " strSQL = strSQL & " AND ((テーブル3.EEE)='" & TB_テーブル2![EEE] & "') " strSQL = strSQL & " AND ((テーブル3.FFF)='" & TB_テーブル2![FFF] & "') " strSQL = strSQL & " AND ((テーブル3.GGG)='" & TB_テーブル2![GGG] & "') " strSQL = strSQL & " AND ((テーブル3.HHH)='" & TB_テーブル2![HHH] & "') " strSQL = strSQL & " AND ((テーブル3.III)='" & TB_テーブル2![III] & "') " strSQL = strSQL & " AND ((テーブル3.JJJ)=" & TB_テーブル2![JJJ] & "));" Set TB_テーブル3 = DB.OpenRecordset(strSQL) Debug.Print "COUNT=" & TB_テーブル3.RecordCount If TB_CCC.RecordCount > 0 Then Debug.Print "削除" TB_テーブル3.Delete Else Debug.Print "追加" TB_テーブル3.AddNew TB_テーブル3![AAA] = TB_テーブル2![AAA] TB_テーブル3![BBB] = TB_テーブル2![BBB] TB_テーブル3.Update End If TB_テーブル3.Close TB_テーブル2.MoveNext Wend TB_テーブル2.Close DB.Close End Sub

  • ACCESSの削除クエリについて

    ACCESSの初心者のものです。 選択クエリで2つのテーブルから一致した項目を抽出したものをだしました。 そのレコードを(2つのテーブル)のデータを削除したいのですがどうすればいいでしょうか? よろしくお願いします。

  • access・複数のテーブル・重複除外したデータ

    accessで複数のテーブルで重複しないレコードだけを抽出するSQL文を知りたいです。 フィールドは多数あり、「フィールドの内容が全て一致するレコード」以外のレコードを 重複しないレコードとして抽出したいと思っています。 テーブルは3つ以上ありますが、2つのテーブルで実行するSQL文でかまいません。

  • 更新クエリー

    ACCESS2000です。 Aというテーブル(レコード件数500件くらい)のValue1というフィールドをBというテーブル(レコード件数1件)のValue1というフィールドの値で全件更新したいのですが、どのようなSQLを書けばよいのでしょうか。 基本的なことだと思いますがよろしくお願いいたします。

  • ACCESS97で テーブルの更新について

    ACCESS97で 相談したいことがあります。 定期的にあるテーブルを作成する時、 (1)テーブル作成クエリーを毎回 実施する方法と (2)元々テーブルを作っておいて  毎回、全件削除クエリー、全件追加クエリーを実行する 方法などがあります。  得られる結果は同じです。 この時、毎回テーブル作成クエリーを実施すると ムダにアクセス自体のファイルが大きくなったり データベースが壊れることが多い と聞いたので (2)の方にしたのですが、処理時間が(1)よりも掛かってしまいます。 そこで、上記(1),(2)に関する方法はどちらの方がお勧めでしょうか? ※ 件数は100000件 くらいあります。

  • 同じ構造の2つのテーブルで登録済みかを確認したい

    あるデータベースの中に、テーブルAとテーブルBがあります。 テーブルAにはレコードが600件ほど登録されています。 テーブルBは、テーブルAと同じ構造を持ち、レコードが100件ほど登録されています。 この2つのテーブルについて、次のような動作を行うSQL文が知りたいです。 ---------------------------------------------------- テーブルBの任意のレコードについて、「そのレコードのURLの値」と同じURLの値を持つレコードがテーブルAに登録されてない場合、レコードをAに登録する。 なお実行の際、比較するのはURLの値のみであり、URLが同じなら他の値が異なっても登録しないものとする。 ---------------------------------------------------- たとえば、 テーブルA NAME URL (フィールド名) a aaa.com b bbb.com c ccc.com d ddd.com e eee.com テーブルB NAME URL (フィールド名) d ddd.com y eee.com f fff.com g ggg.com としたとき、そのSQL文を実行すると、 テーブルA NAME URL (フィールド名) a aaa.com b bbb.com c ccc.com d ddd.com e eee.com f fff.com g ggg.com となります。 最初はテーブルBをPHPで読み込み、レコード一つ一つを登録済みかチェックしてテーブルAに登録する、という方法を考えました。 しかし、SQLを使っている以上、もっといい方法があるのではないかと思い、質問させていただきました。 このような動作を行うSQL文をどなたか教えてください。 よろしくお願いします。