Access2003を使っています。
2つの表を使って更新をする方法が分かりません。
たとえば、キャンペーン商品(数品)の支店別(8支店)販売実績を作成するのに、下記のようなテーブルを用意した場合。
A表,売上表の項目(支店コード、商品コード、数量)
B表,キャンペーン表の項目(商品コード、商品名、支店項目x8)
更新クエリでの”レコードの更新”欄で,A表の支店コードの値でB表の該当支店項目へ加算したいのですが,されません。どのようにすべきでしょうか。
IIf(支店コード=1 支店項目1+数量)
と入力していますが,できていません。これではダメですか。
ご教授下さい。
これではダメだと別の方法を考えるとしたらどうすべきでしょうか?。
No.3ベストアンサー
- 回答日時:
#1のご回答にケチを付けるつもりはありませんが、このような複雑なクエリー(SQL)で対処すると、例えば支店が増えた際のメンテナンスが大変です。
書き直し作業よりも、書き落としが無いかのチェックが悪夢です。そもそもテーブル設計が良くないと思われます。
質問にある「表」ですが、データ保存場所としてのテーブルと、テーブル(複数の場合もある)に対する処理(クエリー)を行った結果を混同していないでしょうか?もしB表がテーブルを意味するならば、「支店項目x8」みたいなフィールドの持ち方は、特殊な理由がない限り、避けた方が良いでしょう。
DBの設計としては
「支店テーブル」「商品テーブル」「キャンペーンテーブル」「売上票テーブル」
などにし、クロス集計クエリーなどで結果を出せば、仮に支店が増えても、クエリー(SQL)は無修正で対応されます。一例としてSQL文を示せば
TRANSFORM Sum(クエリ3.金額) AS 金額の合計
SELECT クエリ3.キャンペーン名, クエリ3.商品名, Sum(クエリ3.金額) AS [合計 金額]
FROM クエリ3
GROUP BY クエリ3.キャンペーン名, クエリ3.商品名
PIVOT クエリ3.支店名;
結果の画像も添付します。
ご回答ありがとうございます。画像付きは理解しやすくていいですね。
10日間、Accesの本やWebで検索しても理解できず悩んでいましたが、この説明でとても理解できました。
感謝します。
No.4
- 回答日時:
ANo2です。
支店テーブルとグループ化したクエリを連結させれば、
すべての支店のデータをひとつの表にすることもできます。
レコードが全くない場合ははヌル(ブランク)表示になりますが、、、
No.1
- 回答日時:
支店コードが"1"~"8"だと仮定して
UPDATE B
SET
B.支店1 = NZ(B.支店1,0)
+ NZ(DSUM( "数量", "A", "支店コード=""1""" & " AND 商品コード=""" & B.商品コード & """"),0),
B.支店2 = NZ(B.支店2,0)
+ NZ(DSUM( "数量", "A", "支店コード=""2""" & " AND 商品コード=""" & B.商品コード & """"),0),
B.支店3 = NZ(B.支店3,0)
+ NZ(DSUM( "数量", "A", "支店コード=""3""" & " AND 商品コード=""" & B.商品コード & """"),0),
B.支店4 = NZ(B.支店4,0)
+ NZ(DSUM( "数量", "A", "支店コード=""4""" & " AND 商品コード=""" & B.商品コード & """"),0),
B.支店5 = NZ(B.支店5,0)
+ NZ(DSUM( "数量", "A", "支店コード=""5""" & " AND 商品コード=""" & B.商品コード & """"),0),
B.支店6 = NZ(B.支店6,0)
+ NZ(DSUM( "数量", "A", "支店コード=""6""" & " AND 商品コード=""" & B.商品コード & """"),0),
B.支店7 = NZ(B.支店7,0)
+ NZ(DSUM( "数量", "A", "支店コード=""7""" & " AND 商品コード=""" & B.商品コード & """"),0)
B.支店8 = NZ(B.支店8,0)
+ NZ(DSUM( "数量", "A", "支店コード=""8""" & " AND 商品コード=""" & B.商品コード & """"),0)
みたいな感じでどうでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Excel(エクセル) エクセル 関数について 4 2022/08/05 11:03
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- その他(Microsoft Office) EXCEL VLOOKUPに関する質問 5 2023/02/08 11:38
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- その他(クラウドサービス・オンラインストレージ) おすすめのパスワードマネージャは? 1 2023/02/28 20:09
- 事件・犯罪 キャンペーン商品が品切れのスシロー。「人気商品が品切れ」を待機客に告知させるのは営業妨害か? 5 2022/07/22 13:30
- Visual Basic(VBA) VBAで質問があります 1 2022/10/19 10:32
- その他(買い物・ショッピング) JANコードの登録について 1 2022/07/23 14:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
場合によって条件を変えるSQL
-
Accessユニオンクエリーで2つ...
-
[Oracle] UPDATE分の副問い合わ...
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
sqlで質問です。 Aテーブルは店...
-
ACCESS2000でDCount関数の使い方
-
主キーの変更
-
請求と入金のテーブルの作成の...
-
update文で質問です。 下記の条...
-
片方だけ抽出する方法(SQL)
-
SELECT時の行ロックの必要性に...
-
accessテーブル作成クエリを実...
-
データの二重表示の原因
-
[ BETWEEN ] vs [ >= AND <= ]
-
ACCESS2007 フォーム 「バリア...
-
accessのロック
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
主キーの変更
-
Accessでフィールドを比較した...
-
SQL 2つのテーブルとSUBSTRING...
-
続.ORACLEのSELECTのソートに...
-
行方向のデータを横に並べる
-
下記のsqlで取得されるレコード...
-
VIEWでテーブルの集計結果...
-
update文で質問です。 下記の条...
-
[Oracle] UPDATE分の副問い合わ...
-
片方だけ抽出する方法(SQL)
-
自分自身への矢印
-
連番のMin, Maxを取得したい
-
Accessユニオンクエリーで2つ...
-
日付の最大値を検索条件にする方法
-
Inner join と Left joinの明...
おすすめ情報