アクセス(Microsoft Access)で複数のデータから条件にあったデータを抽出する方法を知りたいです。

1:JANコード,原価
と並んだ20万件のテーブルと、

2:商品番号,JANコード,数量
(商品番号違いの同一JANコードがあり、JANコードなしの商品番号はありません。2のデータのJANコードはデータ1に必ずあります)
と並んだ40万件のテーブルがあります

2のデータに1のデータからJANコードを基準にして、原価をもってきて
3:商品番号,JANコード,数量,原価

のデータを作成したいのですが、どのような手順で行えばいいのでしょうか?

JANコードを軸にして1のデータから2のデータに当てはめていくのですが、
1のデータの「原価」は1点あたりの原価、
3のデータの「原価」は『1のデータの「原価」』×『2のデータの「数量」』の形にしたいと思っています。

アクセス初心者で説明が上手く出来ないのですが、この説明でわかった方いらっしゃいましたら、お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

よくわかんないな。



SELECT T_ZAIKO.SHOHIN_NO, T_ZAIKO.JAN_CODE, T_GENKA.GENKA, T_ZAIKO.SURYO, [T_GENKA]![GENKA]*[T_ZAIKO]![SURYO] AS TOTALK
FROM T_GENKA RIGHT JOIN T_ZAIKO ON T_GENKA.JAN_CODE = T_ZAIKO.JAN_CODE;
として、原価、数量が表示されることを確認して、表示されているようだったら

VAL([T_GENKA]![GENKA])*VAL([T_ZAIKO]![SURYO])
みたいな事をやってみるかな?
    • good
    • 0

数量および価格のデータ型が数値であることを確認してください。

この回答への補足

ありがとうございます。
数値には共になっているのですが、実行するとTOTALKの列が全て空欄で表示されます。。申し訳ございません。

補足日時:2011/04/27 13:31
    • good
    • 0

こんなのは、アクセスの解説書に必ず載っている例題と同じ問題では。


あまりにも勉強や経験してない状態で、直ぐ他人に頼ってWEBに質問していると思う。
WEBで「アクセス テーブル 結合」でWEB照会(または解説書を読む)し読んで、2テーブルをけつごうするところまでやってみてください。出てくる記事数は膨大です。良さそうなのを数個印刷して、じっくり読んで例題でやって見ては。
結合はJANコード(バーコードでなく、数字コードと思うが)でおこなう。
持ってくる項目などを選ぶのは簡単(テーブルからD&D)
それから先で、やってみて判らない点を絞って質問すべきです。
>1のデータの「原価」は1点あたりの原価、
3のデータの「原価」は『1のデータの「原価」』×『2のデータの「数量」』の形にしたいと
がそんなに難しい計算か何か必要ですか。
>この説明でわかった方いらっしゃいましたら
余りに自分中心です。「判らなければ質問者が質問内容を補足します」、という態度で行かないと。

この回答への補足

imogasi様
ありがとうございます。
そして申し訳ございませんでした。時間がなく詳しく調べもせずに投稿してしまいました。
サイトを参考にし、結合線を引くところまでは行ったのですが、実行するとどうも結果が表示されませんでした。質問する際にそこに絞って質問すればよかったのですが、最初の段階から自分が行っていることが正しいかどうかわからなかったため、このような形になってしまいました。
文章の書き方についても今後気をつけます。

補足日時:2011/04/27 13:28
    • good
    • 0

画像がうまく添付できなかった。

「Accessでのデータ加工方法を教えてく」の回答画像2

この回答への補足

ShowMeHow様
本当にありがとうございます。もう1点質問お願いします。
クリエを作成し、教えていただいたSQLビューを入力し、添付いただいた画像と同じ画面にはなったのですが、実行をすると、TOTALKの列が空欄で表示されてしまいます。
どのような原因があるのでしょうか?csvデータをインポートしてテーブルを作ったのですが、その時でしょうか。何度も申し訳ございません。
よろしくお願いいたします。

補足日時:2011/04/27 11:32
    • good
    • 0

クエリを作成する。



SQLビューだとこんな感じ
SELECT T_ZAIKO.SHOHIN_NO, T_ZAIKO.JAN_CODE, [T_GENKA]![GENKA]*[T_ZAIKO]![SURYO] AS TOTALK
FROM T_GENKA RIGHT JOIN T_ZAIKO ON T_GENKA.JAN_CODE = T_ZAIKO.JAN_CODE;

ただし、商品が2のテーブルにいっぱいあるなら何らかの形で限定させたほうが良い。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessでvlookupみたいなことはできますか。

Accessで、2つのテーブルがあります。

touroku_m テーブル……ID、登録No、氏名、携帯メール
keitai_m テーブル……ID、登録No、携帯メール

keitai_mの方には、携帯メールフィールドに、アドレスが入力されています。
touroku_mテーブルの携帯メールフィールドは空なので、登録Noを比較して、共通だったらkeitai_mに入力してある携帯メールアドレスをtouroku_mに一気に入れたいのです。

こんなことは可能でしょうか。

Aベストアンサー

レス遅くなってすみません。
えっと、追加クエリはテーブル名を見て追加しますので、追加クエリが実行されるときにtouroku_mの名前のテーブルに追加されます。
なので最初touroku_mという名前のテーブルが名前を変えると、それには追加されませんが、またtouroku_mに戻せば追加されるようになりますよ。
要は追加クエリを実行したいテーブルの名前をtouroku_mにしとけば大丈夫です。

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

OS:WindowsXP SP3
使用ソフト: Microsoft Access2003


選択クエリにて、別テーブルのフィールドにある値すべてを抽出条件にできますか?


ホームページに来て頂いた方の検索キーワードを集計しております。
テーブル1には『検索キーワード履歴』フィールドがあり、お客様が使用した検索キーワードが入力されています。(約2万件)
テーブル2には『除外キーワード候補』フィールドがあり、不要なキーワードが入力されています。(約10件)


クエリにて、『検索キーワード履歴』から『除外キーワード候補』の値を全て除いた結果を出力させたいのですが、
抽出条件をどのように指定したらいいのか分かりません。

そもそも、別テーブルのフィールドにある値すべてを除外させる抽出条件って指定できるのでしょうか。
SQLを用いる方法でも構いませんので教えてください。

Aベストアンサー

SELECT * FROM テーブル1
WHERE NOT EXISTS
(SELECT * FROM テーブル2 WHERE テーブル1.検索キーワード履歴 = テーブル2.除外キーワード候補)
OR 検索キーワード履歴 IS NOT NULL
とか
SELECT * FROM テーブル1
WHERE 検索キーワード履歴 NOT IN (SELECT 除外キーワード候補 FROM テーブル2 )
ということ?
1フィールドに1キーワードの場合です。

Qクエリのデータをテーブルに入れたい

アクセス2000での話なんですけど、
クエリではじき出したデータをテーブルに保存したいんですけど、具体的にはどうすればよいのでしょう?
当方、超・超・超初心者なので詳しくお願いします。
わがままで、すみません。

Aベストアンサー

>クエリではじき出した

ということは、その「選択クエリー」(まぁ、普通のクエリーですね)をご自分で作られたわけですよね。
とすると話は簡単で、
その「選択クエリー」をデザインモードで開いて、そのときの画面上方のメニューに[クエリ]がありますから、そこから
(1)既存のテーブルに追加保存したい場合は「追加」を
(2)新規にテーブルを作って保存したい場合は「テーブル作成」を選択します。

各々、選択したときに保存対象とするテーブル名を訊いてきますので(1)なら既存のテーブル名、(2)なら新規に作成したいテーブル名を入力します。

こうすることで「選択クエリー」は「追加クエリー」または「テーブル作成クエリー」に変換されます。

大まかにはこういうことなんですが、その他の詳しいことはイルカ君に訊いてみてください。キーワードは「アクション クエリ」です。

QAccess テーブルを分割してエクスポートしたい

Access 2000のテーブルを指定した行数分に分割して、csv形式にエクスポートしたいと思っています。
例えば、100万件のデータを20万件×5ファイル、というイメージです(対象件数/分割件数ともに一定ではありません)

自分で考えてみたのですが、上位20万件をクエリ→削除クエリ→上位20万件をクエリ→削除クエリ・・・という
方法しか思い浮かばず、もっと簡単に出来る方法をお教えいただければと思います。
よろしくお願いします。

Aベストアンサー

#3です。

>考え方は同じでしょうか。
同じですね。

では、ループで読みながらコーディングでcsvに吐き出す
というのはどうでしょう?
カウンターで20万件ごとにファイル名を変えれば
良いかと思います。

あと別のmdbからリンクはって、ループで読みながら、TEBLEを20万件毎に作るとか。

QACCESS 重複データを1つだけ表示したい(初心者です)

ACCESSで複数のフィールドに全く同じレコードが複数存在します
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
愛知      田中      12
愛知      田中      12
三重      山本      23
三重      山本      23
岐阜      鈴木      33
岐阜      鈴木      33

もともと他のデーターベースからCSVで落としたものをインポートしているので、データの存在自体はどうしようもありませんが、これらの重複しているデータを1件だけ表示したいのです。つまり
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
三重      山本      23
岐阜      鈴木      33

どのようにすればよいでしょうか。

Aベストアンサー

クエリにて[固有のレコード]プロパティーを[はい]にします

QACCESSで毎回CSVファイルをテーブルにインポートする

ACCESSでGUIで毎回CSVファイルをインポートしていますが、
(テーブル→新規作成→デーブルのインポート)
自動化?VBA?することはできるのでしょうか。
ACCSESSは初心者でよくわかっていません。
よろしくおねがいします。

Aベストアンサー

>「マクロに設定」のやり方がわかりません。
え、そうなんですか。
アクセスを開くと左側に「マクロ」ってありませんか。
そこで新規作成します。
テーブルを削除するとか、クエリを開く(実行する)とか、動作を順番に設定するのです。
任意に実行したいなら、マクロ名は任意で構いません。
mdbを開いたら、必要なときにマクロを実行するだけです。

>こちらはoffのする方法が、チェックを外せばいいということでしょうか。
見つけましたよね。そのチェックを外します。

あのー、とりあえず解説書などお持ちではないですか。
最低限のことはそういう書籍で勉強して欲しいのですが。(マクロがわからないことにびっくりしたので)
ここで一つ一つやり取りするわけにもいかないので。

QAccessでボタンを押したらエクセルデータを読み込み処理をしたい

よろしくお願いします。
AccessからExcelを開けるようにしたいのですが、
コードの記述方法がいまいちわかりません。
教えて頂けますでしょうか。

最終的には、ボタンをクリックしたら、ExcelファイルにあるデータをAccessに取り込み、それでDM用のラベルを作りたいと考えています。
勉強が必要なので、少しずつやろうと考え、
開く為のコードからいろいろいじってみようと考えました。
もし、他に効率の良い学習方法があればそちらもお願い致します。

Aベストアンサー

お世話になります。

>コードの記述方法がいまいちわかりません。
と言う事でしたので,最も簡単な方法を。

(1)Accessのマクロを作ります.
 [アクション]で[ワークシート変換]を選択し,
 画面の下部にある,[アクションの引数]に
 適宜入力します。
 
 作成したマクロを適当な名前をつけて保存します。

(2)Accessメニューバーの
 [ツール]→[マクロ]→[マクロを VisualBasicに変換]を選択し,変換します。

変換されたモジュールを見てみれば,
どんな感じでAccessテーブルにインポートするか
解ると思います。

QACCESS テーブルを見比べて、一致したレコードを抽出したいです

ACCESSで、以下のデータ抽出をしたいです。
別々のテーブルで、番号の一致したものだけ取り出したいです。
どのようにすればよいのでしょうか?
よろしくお願いします。

 Aテーブル     Bテーブル
  ・001 ***     ・002 *** 
  ・002 ***     ・004 ***
  ・003 ***     ・001 ***

求める答え

  ・001 ***  
  ・002 *** 

Aベストアンサー

> もう少しくだいて説明頂くとわかるのですが、
判ってしまえば簡単なんですが、言葉だけで説明するのは大変なんですよね。
「自動車の運転を、動作や絵を使わず文字だけで教えろ」と言われているようなものなので....
データベースを開き、
1.「クエリ」をクリック。
2.「新規作成」をクリック。
3.「デザインビュー」を選択して「OK」をクリック。
4.「テーブルの表示」から、「Aテーブル」をクリックし、さらに「CTRL」キーをおしたまま「Bテーブル」をクリックして、
 「Aテーブル」と「Bテーブル」が選択されている状態にして「追加」をクリック。
5.「閉じる」をクリックして「テーブルの表示」パネルを閉じる。
6.「Aテーブル」のコードの部分を「Bテーブル」のコード部分へドラッグする。
7.両テーブルのコード部分が線で結ばれていることを確認する。
8.「Aテーブル」の表示したいフィールドを、下の表にドラッグします。

このへんで、カンベンして下さい...

Qエクセル 数字の前の「00」を消す方法

エクセル初心者なので、行き詰ってしまいました。
どうか、簡単な方法を教えてください。
コード「001234」「001235」「001236」・・・と6桁になっている数字の前2桁「00」を
消して4桁にしたいのです。
置き換えで「00」を、なくすことを考えたのですが、コードが「001200」や「000012」などの
場合全ての「0」も消えてしまいます。
前の「00」のみを消す方法があったら教えてください。
どうぞよろしくお願いいたします。

Aベストアンサー

試しにマクロを作ってみました。
最初はダミーデータでテストして、よければ使ってみてください。
対象セル範囲を選択しておいて、マクロを実行してください。

Sub test()
  Dim c As Range
  For Each c In Selection
    If Len(c.Value) = 6 Then
      c.Value = Right(c.Value, 4)
    End If
  Next
End Sub

セルの書式設定が「文字列」なら大丈夫ですが
そうでない場合、000012 が 12 となります。
その場合は
c.Value = "'" & Right(c.Value, 4)
としてください。

Q抽出条件でデータ型が一致しません。のエラーメッセージが出る

フォームで入力された値を、
次のファイルでクエリを読み込むときに代入するASPを作成しましたが、実行しようとすると、
「データ型が一致しません。」のエラーメッセージが出ます。
DBはACCESSを使用しています。ACCESSの対象テーブルで、
データ型を「テキスト型」にすると問題ないのですが、
「数値型」にすると、「データ型が一致しません」の
エラーメッセージになります。
フォームでは、プルダウンで「数値」を選択するようになっています。
宜しくお願いします。

Aベストアンサー

Where区に指定した条件のフィールドが数値なら『'』でくくる必要がありません

Set rs = db.Execute("SELECT テーブル3.* FROM テーブル3 WHERE (テーブル3.番号)=" & bangou)
といった具合に修正してみましょう

『'』でくくる必要があるのは対象のフィールドが文字列の場合です


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報