別のテーブルの値を抽出条件としたい

このQ&Aのポイント
  • SQL Server2005、Access2003(Accesプロジェクト adb)の環境で、テーブル「社員台帳」からデータを抽出する処理を作りたい。クエリの抽出条件(年度)に、Dlookup("年度","年度辞書")と同じ方法で値を抽出したいが、方法がわからない。どうすればよいか。
  • テーブル「社員台帳」で年度ごとに社員の情報を管理している。また、テーブル「年度辞書」で年度の開始日と終了日を管理している。AccessではDlookup("年度","年度辞書")を使用していたが、同じような方法をSQL Serverでも使いたい。具体的な方法が不明で困っている。
  • SQL Server2005とAccess2003の環境で、テーブル「社員台帳」からデータを抽出する処理を作成したい。Accessでの抽出条件(年度)にはDlookup関数を使用していたが、SQL Serverで同じような方法を実装する方法がわからない。どのようにすればいいかアドバイスをお願いします。
回答を見る
  • ベストアンサー

別のテーブルの値を抽出条件としたい。

別のテーブルの値を抽出条件としたい。 環境は SQL Server2005、Access2003(Accesプロジェクト adb)です。 テーブル「社員台帳」で、年度ごとに社員の情報を管理しています。 イメージはこんな感じです。     年度  社員   基本給     2009 aaa \1,000 2009 bbb \1,050      ・ 2010 aaa \1,020 2010 bbb \1,080 これとは別に年度を管理するテーブル「年度辞書」があります。 これは、1レコード(件)のみデータがあり、毎年書き換えています。 イメージは・・・            年度  開始日   終了日      2009 2009/04/01 2010/03/31 2010年度では上記データを変更します。 そこでお聞きしたいのは、テーブル「社員台帳」からデータを抽出する処理を作りたいのですが、 Accessでは クエリの抽出条件(年度)に、 Dlookup("年度","年度辞書") としていました。 これと同じことがしたいのですが、その方法がわかりません。 どうすればよろしいでしょうか? よろしくお願いします。

  • pon_s
  • お礼率88% (101/114)

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

意味がよく分かりませんが、以下のSQLでどうでしょう SELECT A.* FROM 社員台帳 AS A INNER JOIN 年度辞書 AS B ON A.年度=B.年度

pon_s
質問者

お礼

回答ありがとうございます。 考えてみれば、年度辞書は常に1レコードしかデータが無いので、 ご指摘のように INNER JOIN で結合すれば簡単にできました。 お世話になりました。

関連するQ&A

  • 抽出条件に応じてテーブルを作り分ける方法

    抽出条件テーブル(a)があり、抽出条件が参照するテーブル(b)がある。(a)には複数の抽出条件が登録され、(a)を参照しつつ、(b)から抽出されるテーブル(c)を抽出条件に応じて複数作成したい。つまり、(a)に登録された抽出条件の数だけテーブル(c)が作成される。 これをクエリで実行できる方法をご教示願いたい。 なお、(b)からデータを抽出する場合、上記の抽出条件テーブル(a)に代えて、クエリ内に抽出条件を20~30個記述する方法でも可。 Access2010を使用しています。VBAは使用しません。

  • 2つのテーブルのレコードを比較し、片方にないものを削除したい。

    初診者です。簡単なことかもしれませんがご回答お願い致します。 Access2000を使用しています。 前年度のデータと今年度のデータを比較して、 今年度にないものを抽出したいと考えています。 レコードのフィールドは、端末名(一意)、設置場所です。 結合プロパティを使用して、結合条件を端末名にし、さらに 端末名(前年度)抽出条件を "is Null" にすることで抽出 を試みましたが、 設置場所が前年度から今年度に変更した時には抽出可能(*1) なのですが、端末自体のレコードが今年度に追加されたときは 抽出されません(*2)。 今年度に追加されたときについても抽出できる方法を教えて下さい。 *1の場合(○抽出可)  ○昨年度テーブル       ○今年度テーブル 端末名 | 設置場所     端末名 | 設置場所 AAA     風呂       AAA    台所 *2の場合(×抽出不可)← 抽出したい  ○昨年度テーブル       ○今年度テーブル 端末名 | 設置場所     端末名 | 設置場所    レコード無し       BBB    便所        

  • SQLで○○の値以外を持っているレコードを抽出しないという条件を作りた

    SQLで○○の値以外を持っているレコードを抽出しないという条件を作りたいのですが・・・ 例えばこんな感じのテーブルがあったとします。 A1 A2 A3 -- -- -- AAA AA 111 AAA AB 111 AAA BB 222 BBB BB 111 CCC AA 111 CCC AC 555 DDD BB 222 EEE AA 111 EEE AC 333 EEE BB 777 A2の列に「BB」の値"しか"持っていないレコードを抽出したいのです このテーブルで言えば返りは BBB BB 111 DDD BB 222 と期待しています。 値BBのみしか持ってない条件の作り方を御教示願えませんでしょうか。 また、A2の値も文字数以外は規則性があるわけではないので無限パターンです。 詳しい方よろしくお願いします。

  • Access 別テーブルにある値を抽出条件にしたい

    OS:WindowsXP SP3 使用ソフト: Microsoft Access2003 選択クエリにて、別テーブルのフィールドにある値すべてを抽出条件にできますか? ホームページに来て頂いた方の検索キーワードを集計しております。 テーブル1には『検索キーワード履歴』フィールドがあり、お客様が使用した検索キーワードが入力されています。(約2万件) テーブル2には『除外キーワード候補』フィールドがあり、不要なキーワードが入力されています。(約10件) クエリにて、『検索キーワード履歴』から『除外キーワード候補』の値を全て除いた結果を出力させたいのですが、 抽出条件をどのように指定したらいいのか分かりません。 そもそも、別テーブルのフィールドにある値すべてを除外させる抽出条件って指定できるのでしょうか。 SQLを用いる方法でも構いませんので教えてください。

  • mysqlで横方向ではなく縦方向の条件抽出は…

    id   hoge   num 01   AAA   0 01   BBB   1 02   AAA   1 03   BBB   0 というテーブルがあったとします。 select id from table where hoge='AAA' and num=0 のような条件で検索するのは普通ですが、 カラムではなくレコード単位で見て hogeの値がAAAとBBBの両方である場合のデータとして「01」というidのみを抽出する方法はないものでしょうか。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • Access2007抽出のことで

    Access2007のクエリ、デザインビューのことです。 データが例えば aaa bbb ccc ddd とあるとして、このうちaaaとcccの2つを抽出しようと 思って「"aaa"and"ccc"」とか書いても データシートビューでは空欄になってしまいます。 条件の書き方がおかしいのでしょうか?

  • ACCESS クエリ 抽出条件が多い場合

    ACCESSの超初心者です。 選択クエリで、80件ほどの抽出条件を部分一致で 設定しています。(Likeを使用) 例えばこんな感じです。  フィールド   aaa1   bbb52   aaa33   aac8   bba35   bba115    抽出条件 Like "aaa*" Or Like "bba*" →抽出結果 aaa1,aaa33,bba35,bba115 今後も条件が増えていく予定なので、別の 良い方法がないかと思っています。 (できるかどうかわかりませんが、 別にテーブルを作り、その一覧内の文字が 含まれるレコードのみを抽出) 皆さんのお知恵をお貸しいただけないでしょうか。 宜しくお願いします。

  • 日付と文字列を条件としてDLookup関数で抽出さ

    日付と文字列を条件としてDLookup関数で抽出させたいです。アクセスです。 テーブル1のデザイン フィールド名 ID(数値型) フィールド1(テキスト型) 取得日時(日付/時刻型) テーブル1のデータ ID  フィールド1  取得日時 1       あ  2013/01/05 2       い  2013/01/05 この条件でvbaでIDの値を抽出したいのですが MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#") だと、1が返ってきちゃうのでフィールド1でもフィルタをかけたいのですが どうやればいいでしょうか? MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#" And "[フィールド1] = 'あ'") にすると、型が一致しません。(Error 13)になります。 ご教授よろしくお願いします。

  • テーブルからデータを抽出する場合のスピード

    お世話になっております。 データ抽出のスピードについて質問があります。 例えば3つのページを作るとします。それぞれ、IDで分けるとして、一つがaaa二つ目がbbb三つ目がcccとします。それぞれのデータをMySQLより抽出しようと思ってます。その際のテーブルのフィールドはどれも同じです。 一つの方法として、一つテーブルを作成し、そこに全てのデータを入れて、それぞれWHERE id = aaaなどとしてデータを抽出する方法。 二つ目は、それぞれIDごとにテーブルを作成し、それぞれのテーブルにそれぞれのデータを入れて抽出する方法。 どちらが負荷、速度共にいいのでしょうか。 私が思うに、一つ目の方法の場合、データが増えてきたときに、WHERE id = aaaなどとして抽出するのに時間がかかってしまうように思います。 ちょっと分かりにくい説明かと思いますが、どなたか宜しくお願いします。

    • ベストアンサー
    • MySQL
  • 抽出条件入力用テキストボックスが空白の場合の抽出条件

    SQL初心者です。 今あるテーブル(TABLE)に | VALUE_A | VALUE_B | VALUE_C | VALUE_D | ----------------------------------------- | 000 | AAA | AAA | AAA | | 001 | AAA | AAA | BBB | | 002 | AAA | BBB | AAA | | 003 | BBB | BBB | BBB | | 004 | BBB | BBB | NULL | のようなデータが入っているとします。 Web上から VALUE_B VALUE_C VALUE_D に対しそれぞれテキストボックス入力フィールドから値を入力し検索を行うようにしたいのです。 [VALUE_B]=AAA [VALUE_C]=AAA [VALUE_D]=AAA と入力されれば VALUE_A:000 を検索結果として出します。 [VALUE_B]=AAA [VALUE_D]=AAA と入力されれば VALUE_A:000 VALUE_A:002 を検索結果として出します。 [VALUE_B]=AAA だけが入力された場合は VALUE_A:001 VALUE_A:002 VALUE_A:003 を検索結果として出します。 つまり、フォームのテキストボックスに入力された条件で抽出し、入力が無い場合は全件抽出を行いたいのです。 この場合、どのようなSQLを組めばよいのかわかりません。ANDやORだけでは対応できないような気がします。Oracleを始めたばかりということもあり、どのような関数を使えばよいのかもわかりません。どなたかご教授いただけませんでしょうか??よろしくお願いします。