• ベストアンサー

追加クエリ

企業コード_項目構成比_項目ID_分類ID 同じ企業コードで項目ID、1、2、3のどれかに数字がある場合 ない項目を追加したいのですが、どのようにすればよいでしょうか。 (追加する項目構成比は0) 一つの企業コードを分割して表で表すと以下のとおり。 分類ID 項目ID     1 2 3 1  30 20 50 2  30 70 ※  4  ※ 70 30 ※の部分に0を追加。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.5

以下の質問との関連ですが、こちらの質問への回答とするのが 相応しい内容と判断しましたので、こちらで回答させて戴きます。 http://oshiete1.goo.ne.jp/qa4532253.html ・必要なデータの配列は、クロス集計クエリと同様。  但し、データがないものについては空欄ではなく「0」を表示。 ・入力/編集に使用するため、実際にはクロス集計クエリは不可。 ということでしたら、「クロス集計クエリを元にした、追加クエリ(又は テーブル作成クエリ)」で対処するのが、比較的簡単かと思います。 クロス集計クエリで、空白を0に変換(以前の回答): http://oshiete1.goo.ne.jp/qa4208171.html?ans_count_asc=1 クロス集計クエリからテーブル作成クエリ(以前の回答): http://oshiete1.goo.ne.jp/qa3734660.html?ans_count_asc=0

sskj
質問者

お礼

クロス集計クエリを元にとは思い付きませんでした。 ありがとうございました。

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

その他の回答 (4)

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.4

やぁやぁ、ごめん。 補足を求めてみてませんでした。 対象のテーブルを構成TBL 企業コードが一意になる企業TBL 分類のテーブルを分類TBLがあるものと想定して ちなみに分類TBLには 分類ID,項目ID 9,1 9,2 9,3 と入っているものと仮定をしていますので、他の分類が入っていてもOK まず単純に企業TBLと分類TBLをCROSS JOINすると SELECT 企業TBL.企業コード.T2.分類ID,T2.項目ID FROM 企業TBL CROSS JOIN (SELECT 分類ID,項目ID FROM 分類TBL WHERE 分類ID=9) AS T2 本来あるべき全レコードが出来ます これと排他結合し既に存在するレコード以外を挿入してやればよい。 つまり INSERT INTO 構成TBL(企業コード,分類ID,項目ID,項目構成) SELECT T1.企業コード,T1.分類ID,T1.項目ID,0 FROM (SELECT 企業TBL.企業コード.T2.分類ID,T2.項目ID FROM 企業TBL CROSS JOIN (SELECT 分類ID,項目ID FROM 分類TBL WHERE 分類ID=9) AS T2) AS T1 LEFT JOIN 構成TBL AS T0 ON T1.企業コード = T0.企業コード AND T1.分類ID = T0.分類ID AND T2.項目ID = T0.項目ID WHERE T0.企業コード IS NULL とすればいかがかな? Insert文をはずしてクエリーで確認かな?

sskj
質問者

補足

私のやり方が悪いのかFROM句の構文エラーと出ます。 テーブルは以下のようです。 テーブル名:企業マスタ フィールド_企業コード_社名_住所_等 テーブル名:調査データ(3項目) フィールド_企業コード_項目構成_分類ID_項目ID_オートナンバー テーブル名:調査データ(売上構成) フィールド_企業コード_分類ID_売上構成_オートナンバー このほかに分類名テーブル_項目名テーブルがあります。 SELECT FROM 調査データ(売上構成) INNER JOIN (企業マスタ INNER JOIN 調査データ(3項目) ON 企業マスタ.企業コード = 調査データ(3項目).企業コード) ON (企業マスタ.企業コード = 調査データ(売上構成).企業コード) AND (調査データ(売上構成).分類ID = 調査データ(3項目).分類ID); 通常のつなぎ方をするとこうなります。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

今のレコードのフィールドと、そのデータの実例を挙げてください。 挙げないから意図がわからないという声が出るのだと思う。 ーーーーーーー また、標題の「追加クエリ」というのは、質問のやりたいことを反映 してないのでは? 本来の意味と違うでしょう。 http://www.seta.media.ryukoku.ac.jp/manual/office/access/query/add_query.html ーー 回答が出ているように、クロス(集計)クエリではないのか。 そして該当のない部分にも0を表示したいのか。 http://okwave.jp/qa881230.htmlのような質問が有るよ。

sskj
質問者

補足

テーブル ID(オートナンバー) 企業コード_分類ID _項目ID_項目構成 137_13_9_1_35 136_13_9_2_3 185_13_9_3_62 100_14_9_3_100 229_15_9_1_20 228_15_9_2_5 115_15_9_3_75 130_16_9_3_100 企業コード14を質問内容に書いた表に表すと以下のようになります。 [表] 企業コード14 分類ID 項目ID     1 2 3 9   ※※ 100←構成比 14の場合分類ID9に対して項目ID1,2のレコードがないので以下の様にデータを追加。 企業コード 分類ID 項目ID 項目構成 14 9 1 0 14 9 2 0 ※なぜこのようなことがしたいか? 入力フォームを表の形にしたいためです。 [クエリで項目ID3のみ抽出した例] SELECT ●T_K調査データ(ウエア、シューズ、グッズ).企業コード, ●T_K調査データ(ウエア、シューズ、グッズ).項目構成, ●T_K調査データ(ウエア、シューズ、グッズ).分類ID, ●T_K調査データ(ウエア、シューズ、グッズ).項目ID FROM ●T_K調査データ(ウエア、シューズ、グッズ) WHERE (((●T_K調査データ(ウエア、シューズ、グッズ).項目ID)=3)); 上記のSQLは項目ID3の抽出例です。以下のようにID1、ID2、ID3を抽出したクエリを結合し、それを元にサブフォームを作ったのですが、ID1、2、3のレコードがそろっていないとすべてが表示されなくなるので、(内部結合のため)追加したいのです。 SELECT nz(テスト1!項目構成) AS 式1, nz(テスト2!項目構成) AS 式2, nz(テスト3!項目構成) AS 式3 FROM (テスト1 INNER JOIN テスト2 ON (テスト1.企業コード = テスト2.企業コード) AND (テスト1.分類ID = テスト2.分類ID)) INNER JOIN テスト3 ON (テスト2.企業コード = テスト3.企業コード) AND (テスト2.分類ID = テスト3.分類ID); もしこのようなやり方をしなくとも表形式のようなフォームが作れるのでしたらそちらを教えていただきたいのですが・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • umazanpai
  • ベストアンサー率38% (53/137)
回答No.2

更新クエリですね。 あとはクロス集計してるんでしょうから 値をNzしとくとか

sskj
質問者

補足

質問の詳細は回答1の補足にいたしました。

全文を見る
すると、全ての回答が全文表示されます。
  • noah7150
  • ベストアンサー率46% (116/251)
回答No.1

質問内容が理解できません。 現状のテーブル内容と結果として欲しい内容を書いていただければお答えできると思うのですが

sskj
質問者

補足

質問の詳細は回答1の補足にいたしました。

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

関連するQ&A

  • Access フォームの作成 レコードの追加について

    原稿が以下のようになっている、フォームを作成したのですが 入力に手間が掛かるので良案がありましたらお願いいたします。 企業コードxxxx 店名_xxx店 住所_xxxx市xxx村 商品分類_売上構成_ウエア_シューズ_グッズ 野球ソフト_(野球ソフトの構成数値)_(野球ソフトのウエアの構成数値)_・・・ テニス_ バドミントン_ 卓球_ ゴルフ_ ・ ・ ・ 合計_ 分類ID(商品名)は15商品と決まっております 3品目もウエア、シューズ、グッズと決まっております。 原稿は商品名15品目がすべて印字済みです。 エクセルの表のような原稿だと考えていただければよいかと思います。 テーブルは正規化に則り以下のように作成しました。 売上構成テーブル 企業コード_売上構成_分類ID(商品名のID) 3品目(ウエア、シューズ、グッズ) 企業コード_3品目構成比_分類ID_項目ID(3品目のID) 店マスタテーブル 企業コード_店名_電話番号 等 現在は店マスタテーブルをメインフォームにサブフォームを 売上構成、3品目と作成しましたがこのままでは見にくいですし IDをわざわざ入力しなければなりません。(新規のデータの場合) メインフォーム(単票フォーム) サブフォーム(データシート) 一つの企業コードに対して最大15商品、それらに対して3品目は決まっているので ID入力を省くように追加ボタンの作成は出来ないのでしょうか? 企業コードを指定してクリックすると売上構成に1~15までの商品レコード追加。 企業コードを指定してクリックすると3品目項目IDを追加。 入力の並びに関しては以前ご質問したときにVBAで長いコードを 書かなければならないと解答をいただきました。 VBAは殆どさわった事ないので分かりません。(検索に使っている程度です。) 以上のことでもし何かありましたら回答お願いいたします。

  • ACCESS フォームの作成について

    企業コード(重複しない)売上構成比(abc商品)、項目構成比(a)、項目構成比(b),項目構成比(c) と項目がある場合、私の作成したデータベースでは 売上構成比テーブル 企業コード_売上構成比_種別ID 3項目テーブル 企業コード_3品目項目ID_種別ID_項目構成比_種別名 としています。 売上構成比と言うのは売上の種類別の比率です。(15種類) さらにその種類の項目別の比率が3項目あります。 同じ企業コードで同じ種別IDの項目構成比を足せば100%になります。 同じ企業コードで売上構成比を足せば100%になります。 企業コードは店舗のデータがあるので(店名、住所等)そちらの主キーになります。 要約すると、店別の構成比ということです。 ここで問題になるのが、入力フォームを作成するさいに、 売上構成比(abc商品例ゴルフ)、項目構成比(a項目)、項目構成比(b項目),項目構成比(c項目) のように作成しないとミスを気づかない場合があります。 ですので項目IDごとにクエリを作成し (項目a 項目b 項目c)それらのクエリを企業コード、種別IDで結び、 これをサブフォームとして作成したのですが、次のレコードに進むときに処理に時間がかかります。5秒程度 サブフォームの総レコード数が23万件弱あるため仕方がないのですが、どうにかならないでしょうか? //upload.jpn.ph/upload/upload.php?id=30628 分類名=種類名 例:3品目テーブル 企業コード 種別ID 項目ID 項目構成 3 1 1 0 3 1 2 0 3 1 3 0 3 2 1 0 3 2 2 0 3 2 3 0 3 3 1 0 3 3 2 0 3 3 3 0 3 4 1 0 3 4 2 0 3 4 3 0 3 5 1 0 3 5 2 0 3 5 3 0 3 6 1 0 3 6 2 0 3 6 3 0 3 7 1 0 3 7 2 0 3 7 3 0 3 8 1 0 3 8 2 0 3 8 3 0 3 9 1 10 3 9 2 5 3 9 3 85 3 10 1 0 3 10 2 0 3 10 3 0 3 11 1 0 3 11 2 0 3 11 3 0 3 12 1 0 3 12 2 0 3 12 3 0 3 13 1 0 3 13 2 0 3 13 3 0 3 14 1 0 3 14 2 0 3 14 3 0 3 15 1 0 3 15 2 0 3 15 3 0

  • access 更新クエリ?追加クエリ?

    access超初心者です。 いま、下記のような在庫表をつくっています。 (出庫テーブルは省略してます) 入庫テーブル  ID  入庫日付  大分類  中分類  小分類  数量   在庫テーブル  ID  大分類   中分類   小分類  最初の数  入庫数   出庫数 入庫更新クエリ *入庫→在庫  大分類        中分類           小分類 ・入庫の全レコードと在庫表の同じ結合フィールドのレコードだけを含める で結合しています。 *在庫表の入庫数  レコードの更新で  NZ([在庫数]![入庫数],0)+NZ([入庫]![数量],0) といれています。 入庫テーブルに入力していき その都度、 入庫更新クエリにて更新し 在庫表に反映させていきたいと思っています。 入庫表には、この先 在庫表にないものもでてくるので 在庫表にないものは 追加、あるものは、更新としていきたいです。 今の状態だと 入庫表のものは、更新クエリでいったん在庫表に反映されるのですが 入庫表にレコードを追加して また更新クエリをかけると 在庫表が、前に更新したレコードの分も 重複して反映してしまいます。 これをなくすには、どういった方法が ありますか? 宜しくお願いいたします

  • Access クエリ、レポートによる集計について

    クエリで目的の集計結果を出すために制作中なのですが 私の作り方が悪いようでレポートを作成する段階でAccessが フリーズしてしまいます。 集計内容テーブル構成は以下のとおりです。 (マーケティング処理用のデータベース) 一つの企業がいくつもの店を持っています。 企業用のデータと店用のフィールド項目は同じですが一対多を保つためにテーブルを分けています。(企業側が一、店側が多。) このように一つの企業に対して店がいくつもある場合、多店舗と呼んでいます。 この多店舗を持つ企業データだけで1500社程度あります。 多店舗のデータは1万件ほどです。 一つの企業に対して一つの店しかない単独店のデータもあります。 企業用と店用を分ける必要が無いので単独店のデータは一つだけです。 今の段階では企業テーブルに多店舗の企業データ。 店テーブルに多店舗のデータと単独店のデータとなっております。 別テーブルに商品分類テーブルがあり、フィールドとしては構成比、分類IDとなっています。 この商品分類を横並びにするためにクロス集計クエリを使い横並びにしました。分類は15品目程度あります。 ついでに構成比と別テーブルにある売上を元にパーセントを金額に直しています。抽出条件に売上100000以上としています。 クエリ名:●販売高(すべて) http://upload.jpn.ph/img/u14091.txt 県ごと企業ごとの集計をしたいので、 フィールドは 都道府県、掲載拒否(0)、データレベル(10)、企業コードをグループ化。以下商品分類は合計と設定しています。  クエリ名:◆多店舗販売高(仮名) (データレベル、00が単独店 10が多店舗)  (掲載拒否、1の場合は拒否) ttp://upload.jpn.ph/img/u14092.txt 単独店は一店舗だけなので多店舗のような企業ごとの集計はする必要がありません。販売高クエリを使いデータレベル00、掲載拒否0、商品分類や企業コードを入れただけです。 これで完成ではなく、掲載拒否の合計データを入れる必要があります。 フィールドとしては、都道府県、店名、掲載拒否(1)、企業コードでグループ化、以下商品分類は合計。 これら3つの集計内容をユニオンクエリで一つにしています。 (多店舗販売高+企業名、単独店販売高、その他販売高)(県別集計) 多店舗販売高に関しては後から企業名を別クエリで足しています。 フィールド数、フィールド名を合わせる為に、その他販売高クエリの、店名及び企業コードはNULLで設定しています。 このユニオンクエリをレポートで設定し、グループレベルでトップを県、 二番目に掲載フィールドを設定。 集計は分類のすべてを合計で設定。 県でグループ化して、その他とそれ以外の合計を出したいので掲載フィールドをユニオンクエリを作成する前段階で追加しました。 (掲載1はその他、それ以外は0) 集計したい内容をエクセルで簡単に表すとこういう感じです。 ttp://upload.jpn.ph/img/u14090.jpg 社数やシェアなどの計算はクエリでさらに作成しなければならないのでしょうか?

  • Access 分類分け クエリの作成方法について

    商品分類項目に野球 テニス サッカー等の項目が15以上あります。 その各項目にウエア シューズ グッズ 構成比率とあります。 テーブルを作成するときに構成比率 ウエア シューズ グッズ 分類IDとフィールドを作成し、項目事に分類IDを振り分けました。 野球販売高を算出するには売上高*野球構成比/100*0.5と計算します。 クエリでこれらを計算するには抽出条件で15項目のファイルを作成する必要がありますよね さらに計算する1項目につき1ファイル必要ですよね 算出するのは野球販売高だけではなく、テニス販売高、サッカー販売高 と項目事に必要です。 計算項目はこれ以外にも14あり、それらを上記の方法で算出するとファイル数が膨大になります。 Accessではクエリの数が数十個になるのは普通なのでしょうか?

  • Access 構成比 クエリ集計

    販売高:クエリ 品目 ウエア販売高_シューズ販売高_グッズ販売高_販売高計_ 野球  100__________300_____________250_650 サッカー200___________400_____________300_900 卓球  300___________500_____________400_1200 合計  600___________1200____________950_2750 以下のような各項目の構成比をだしたいのですが、Accessだと複雑になりますよね? 集計結果 品目 ウエア販売高_構成比_シューズ販売高_構成比_グッズ販売高_構成比_販売高計_構成比 野球  100______構成比____300__構成比___________250_構成比_650_構成比 サッカー200______構成比_____400__構成比___________300_構成比_900_構成比 卓球  300______構成比_____500__構成比___________400_構成比_1200_構成比 合計  600______100%_____1200_____100%__________950_100%_2750_100% 構成比___________21.8%_________構成比_________構成比______100% 構成比は販売高計の合計を100としそれを対象の金額で割って小数点第二位で四捨五入したものです。 例)ウエア販売高合計の構成比 21.8%=int(600/2750*1000+0.5)10 EXCELで計算しても良いのですが・・・クエリが複雑になりすぎますかね

  • Accessの不一致クエリについて

    Accessの初心者です。 二つのテーブルのデータを比較したいのですが、それぞれ構成が違います。例えば”6523410”という数字が両方のテーブルにあるかどうかを調べたいとします。 テーブルA 523(契約コード),410(ID) テーブルB 6523(取引コード),41(地域コード) 頭の”6”と最後の”0”は共通の数字です。クエリで新たにフィールどを作り、”6523410”にするまではわかるのですが、2つのテーブルのリレーションシップはどのようにすればよいか、わかりません。 このような場合は、不一致クエリは使えないのでしょうか? 仕事で、明日中にデータを照合しなければいけないので困っています。 よろしくお願いします。

  • ACCESS 入力フォーム 項目の並びについて

    テーブル1 コード_店名_項目_構成比 1_a_野球_10 1_a_テニス_20 1_a_ゴルフ_30 ・ ・ ・ テーブル2 コード_企業名 1_z このようなテーブルからフォームを作成中なのですが テーブル1、サブフォーム側の入力表示を原稿通りにしたのですが、 以下のように出来ないでしょうか? コード_店名_野球_テニス_ゴルフ

  • Accessの不一致クエリについて

    Accessの初心者です。二つのテーブルの異なるフィールどを比較する方法について、教えてください。 例えば、"6523610"という数字が両方のテーブルにあるかどうか調べたいとします。 テーブルA 523(フィールド名:契約コード)+610(ID) テーブルB 6523(フィールド名:取引コード)+61(フィールド名:地域コード) と、それぞれ構成が違います。頭につく"6"と最後の"0"は共通の数字です。クエリで新たなフィールドを作って、"6523610"にするまではわかるのですが、どのフィールドを関連づけていいかわかりません。このような場合は、不一致クエリではできないのでしょうか? 仕事で、明日中にデータを調べなければいけないので困っています。 よろしくお願いします。

  • Accessのクエリで

    商品コードというフィールドがあるのですが、 ローマ字2文字以上、数字4桁で構成されています。 (AA0000やAAA0000といった具合) これをクエリで商品コードA・商品コードBというフィールドに分けたいのですが、 前部分の文字数の違うローマ字の抜き出しってできますか? どなたか回答お願いします。

このQ&Aのポイント
  • 突然画面が真っ黒になってどこを押しても反応がない
  • 強制終了してもリセットを押しても電源が切れず本体がどんどん熱くなっている
  • 富士通FMVの問題の解決方法を教えてほしい
回答を見る

専門家に質問してみよう