• ベストアンサー

アクセス2003 

いつもお世話になっています。 アクセス2003で下記のことは出来るでしょうか? <名簿テーブル>の名前フィールドに太郎・二郎・三郎・・・と1000人を登録します。 <名簿テーブル>とリンクした<給与テーブル>で4月に太郎に1万円の給与を支払ったことを入力したとします。 このとき新たに4月の1000人全員の名前と給与支払額をまとめたデータを作成出来ますか? 太郎以外の未入力の人には0円と表示したいのですが。 宜しくお願いします。

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

テーブル構造を下記のように仮定します。【 】は主キー 名簿テーブル(【ID】,名前) 給与テーブル(【ID,支給月】,給与) >太郎以外の未入力の人には0円と表示したいのですが。 LEFT JOIN(RIGHT JOIN)を使えば可能だと思います。 ---------------- SELECT 名簿テーブル.名前, Nz(給与テーブル.給与,0) as 給与 FROM 名簿テーブル LEFT JOIN 給与テーブル ON 名簿テーブル.ID = 給与テーブル.ID; ---------------- しかし、実際は4月以外のデータも入るでしょうから、 月で絞り込む必要があると思います。 しかし、下記のようにするのはよくある間違いです。 ---------------- SELECT 名簿テーブル.名前, Nz(給与テーブル.給与,0) as 給与 FROM 名簿テーブル LEFT JOIN 給与テーブル ON 名簿テーブル.ID = 給与テーブル.ID WHERE 給与テーブル.支給月 = 4; ---------------- ちょっと工夫が要ります。 クエリを2段にするのが簡単だと思います。 -------Q1------- SELECT * FROM 給与テーブル WHERE 給与テーブル.支給月=4; ---------------- -------Q2------- SELECT 名簿テーブル.名前, Nz(Q1.給与,0) AS 給与 FROM 名簿テーブル LEFT JOIN Q1 ON 名簿テーブル.ID = Q1.ID; ---------------- 更に、パラメータを使うと、開く時に月を指定できます。 -------Q1------- PARAMETERS 月を入力 Value; SELECT * FROM 給与テーブル WHERE 給与テーブル.支給月=月を入力; ---------------- -------Q2------- SELECT 名簿テーブル.名前, Nz(Q1.給与,0) AS 給与 FROM 名簿テーブル LEFT JOIN Q1 ON 名簿テーブル.ID = Q1.ID; ---------------- 補足:SQL文の使い方 ・クエリ→新規作成→デザインビュー ・テーブルは追加しない ・表示→SQLビュー ・SQL文をコピー&ペースト

kobutoriman085
質問者

お礼

お礼が遅くなってすいません。 SQLはまったくの初心者だったので本を買って少し勉強してみました。 まだまだ使いこなせないでしょうけど、こういうこともできるのかと大変参考になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

新しいレコードを作るには追加クエリを使います 名簿テーブルから追加クエリを作成 給与フィールドには太郎のときだけ10,000が入るようにすればいいでしょう 給与:IIf(名前="太郎",10000,0)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【初心者】ACCESSで異なるテーブルの数値を比較~計算したいです。

    またまたACCESSに詳しい方がいましたらお教え下さい。 テーブルA 名前|金額 ----------- 太郎|3000 次郎|2000 三郎|1000 テーブルB 名前|借入 ----------- 太郎|1000 次郎|2000 三郎|3000 こんなテーブルが2つあった場合。(名前フィールドはAもBも同じ) クエリで金額と借入を比較し、金額>借入の場合に表示。かつ表示するものは金額-借入の 数値とする場合は、どのようにすればいいでしょうか。。 (金額<借入の場合は表示自体しなくて良い) 【結果イメージ】 名前|結果 ----------- 太郎|2000 ご存知の方がいらしたら、お教え下さい。

  • アクセス97のクエリーでIF関数を使って特定のコードがある場合に*を表示させたいのですが、うまくいきません。

    会社でマイクロソフトAccess97を使って作業しています。 初心者で分からないことだらけでして、基本的なことだと思うのですがこちらで質問させていただきます。 給与年月・社員番号・名前・給与コード・給与額のフィールドを持ったテーブルがあります。 従業員一人につき、同年月の給与で複数行の給与項目・金額を持っている形です。(以下イメージ) 給与年月  社員番号  名前  給与コード 給与額 200709    001     花子   A01    200000 200709    001     花子   C02     20000 200709    001     花子   M05     10000 200709    002     太郎   A01     230000 200709    002     太郎   B04      35000 200709    002     太郎   L02     5000                 このテーブルを使ったクエリーで、給与コードがA番台~L番台のものだけを抽出させようとして、 それは式を入れてうまくいったのですが(以下例の通り、結果M05の行は表示されなくなった)、 それと同時に特定の給与コード(例えばL01とL02)があった場合にはその行に「*」を表示、 それら以外なら何も表示しないというフィールドを追加したいのですが、うまくいきません。 クエリーデザイン画面で「要確認」のフィールドを追加、フィールド名欄に、 要確認:IIF([給与コード]=”L01” or “L02”,”*”,””) という式を入れたのですが、結果全ての行に「*」が表示されてしまいます。(以下例) 目指したいのは、この例で言うと、最終行太郎のL02の行のみに「*」を表示させることなのですが。。。 給与年月  社員番号  名前  給与コード 給与額 要確認 200709    001     花子   A01    200000    * 200709    001     花子   C02     20000    * 200709    002     太郎   A01     230000    * 200709    002     太郎   B04      35000     * 200709    002     太郎   L02     5000     * 何を変えたら、目指す結果を得られるでしょうか?

  • Accessで一致データを抜いて項目をずらす方法

    Access2000を使用して、テーブル1のフィールド2~5で、テーブル2と一致したフィールドを抜いて項目をシフトさせたいのですが、どのような方法があるのでしょうか。 <元テーブル>    フィールド→ 氏名, 名1, 名2, 名3, 名4 ・テーブル1の項目 山田,花子,次郎,三郎,四郎           鈴木,五郎,六郎,七朗,和子           佐藤,和子,一郎,太郎,四郎 ・テーブル2の項目 山田,花子           鈴木,七朗           鈴木,和子          佐藤,一郎           佐藤,四郎           佐藤,和子 <変換後テーブル>テーブル1を基準として   フィールド→ 氏名, 名1, 名2, 名3, 名4           山田,次郎,三郎,四郎,null           鈴木,五郎,六郎,null,null           佐藤,太郎,null,null,null 分りずらい説明で申し訳ありませんが、宜しくお願いします。

  • 条件を抽出し、フラグを立てる関数

    下記条件の場合、D列に「○」フラグを立てたいです。 D列に入力する関数を教えてください。 どうぞよろしくお願い致します。 ・ B列が同じ名前の行を抽出。 ・ 抽出した行のC列に「鉛筆」「消しゴム」「ペン」が入力されている場合、   D列に「○」をつけたい。 ・ ただし、B列が同じでも、C列に「鉛筆」「消しゴム」「ペン」以外が入っていた 場合、D列には何も入れない。 ※B列には飛び飛びに同じ名前が入力されている場合もあります。 ※行は1000行ほどあります。 【前】      B列    C列 山田太郎  鉛筆 山田太郎  ペン 伊藤二郎  缶 伊藤二郎  鉛筆 鈴木五郎  ペン 鈴木五郎  消しゴム 木村三郎  消しゴム 木村三郎  鉛筆 山田太郎  消しゴム 鈴木五郎  パソコン 【後】   B列    C列    D列 山田太郎  鉛筆    ○ 山田太郎  ペン    ○ 伊藤二郎  缶 伊藤二郎  鉛筆 鈴木五郎  ペン 鈴木五郎  消しゴム 木村三郎  消しゴム  ○ 木村三郎  鉛筆    ○ 山田太郎  消しゴム  ○ 鈴木五郎  パソコン わかりにくくて申し訳ありませんが、よろしくお願いいたします。

  • Access]2つのテーブルを比較してフィールドの一部が一致したデータを抽出

    2つの名簿テーブルを比較してどちらのテーブルにも含まれている個人を抽出したいと考えております。 テーブル名とフィールドは以下のとおりです。 ==================== テーブル名「名簿A」 氏名 電話番号 住所 メールアドレス ==================== テーブル名「名簿B」 姓 名 電話番号 住所 メールアドレス ==================== たとえば、この2つの名簿をメールアドレスで一致したものを抽出する場合は選択クエリのデザインビューで「名簿A」のフィールドを読み込ませ、 メールアドレスフィールドの抽出条件として Like [名簿B].[メールアドレス] を入れれば抽出ができたのですが、メールアドレスは、名簿ごとに記入されていたりしなかったりするので、名前での一致を行いたいと思っています。 ここで問題なのが、名簿Aは「氏名」で入力されているのに対し、名簿Bでは「姓」と「名」が別フィールドになっております。 そこで自分なりにやってみたのが、選択クエリのデザインビューで「氏名」のフィールドの抽出条件として Like (*[名簿B].[姓]*) を設定するものでした。 これがうまくいけば最終的には Like (*[名簿B].[姓]*) And Like (*[名簿B].[名]*) という風にして、名簿Aの「氏名」フィールドに名簿Bの「姓」も「名」も入っているものを抽出できるかな?と考えたのですが、上記のように入力すると、自動的に Like ("*[名簿B].[姓]*") となってしまい、何も抽出されなくなってしまいました。 このような方法では希望する抽出は行えないのでしょうか? お分かりのかた、よろしくお願いいたします。

  • ワード 差込フィールドの間隔について

    度々質問してすみません。教えて下さい。 XPのワードの差込印刷で宛名ラベルを作成中です。 差込フィールドを挿入した場合、フィールドとフィールドの間にスペースを挿入したいのですが、自動的にくっついてしまいます。 下記のように家族1と家族2の間と、家族3と家族4の間にスペースを入れて 《〒郵便番号》 《住所》 《氏名_様》 《家族1_様》 《家族2_様》 《家族3_様》 《家族4_様》 《家族5_様》 データを差し込んだ時に 〒100-0001 千代田区XXX-XXX 佐藤太郎 様 二郎 様 三郎 様 四郎 様 五郎 様 六郎 様 となるようにしたいのですが、エクセルのデータを読み込むと、 〒100-0001 千代田区XXX-XXX 佐藤太郎 様 二郎 様三郎 様 四郎 様五郎 様 六郎 様 となって前の人の様と次の人の名前がくっついてしまいます。 差込フィールドと差込フィールドの間にスペースを入れるための方法を教えて頂けますか?何卒宜しくお願い致します。

  • 複数のテーブルから情報を引き出して整理

    「去年の登録者」「今年の登録者」というテーブルがあるとします。 カラムは両方とも「名前」「性別」「年齢」があり、人物の情報が入ってます。 両方にデータが入ってる人もいれば、片方にしかデータが入ってない人もいます。 この2つのテーブルから男性のデータを引き出し 名前 去年の年齢 今年の年齢 太郎 21歳    22歳 二郎 24歳    データなし 三郎 データなし 20歳 このようにしたいのですがsql文が思いつきません。 アドバイスをください。

    • ベストアンサー
    • MySQL
  • Access 複数テーブルのリレーションシップ

    Access2013  4種類の名簿をそれぞれのテーブル(4種類)で管理してありますが、 同じ方(氏名)が4種類の名簿全部には無く、2つや3つの名簿にばらばらにあります。  この4つのテーブルを同時に表示し入力できる分割フォームをつくりたいのですが、 この際の、4つテーブルの氏名をリレーションシップする結合プロパティの設定方法を教えて下さい。 あるいは、クエリのそれぞれのテーブルのフィールド(氏名)の抽出条件になんと書き入れたらよいか。教えて下さい。 宜しくお願いします

  • アクセスのレポートで同ページ内で2つ同じ内容を表示するには?

    アクセスを利用して顧客からの入金情報を入力しています。 内容は入金日、入金金額、顧客名の3データのみですが、会計部署へ提出する分と当部署の控えを同ページ内に作りたいと思います。(紙節約のため…) 一回のデータは5行程度なので充分可能なのですがレポートの設計がうまくできません。 具体的には 7月7日 山田花子 5000円 7月8日 加藤太郎 2500円 7月8日 佐藤二郎 4200円 (少し空白を空けて) 7月7日 山田花子 5000円 7月8日 加藤太郎 2500円 7月8日 佐藤二郎 4200円 どなたか詳しい方教えてください。 よろしくお願いします。

  • Accessで合計値を求めたい

    現在、Accessに登録したテーブルに、二つのフィールドがあります。 フィールド1にはID(名前)が入ってますが、同じフィールド内で重複しています。 フィールド2には、フィールド1の人物の「貯金額」が入っています。 フィールド1の人物の貯金額を合算して、 「フィールド1:ID、フィールド2:合計貯金額」 の形式でデータ出力したいのですが、 どのようなSQLを組めば良いでしょうか? 教えてください!

専門家に質問してみよう