• ベストアンサー

ACCESSで同時に出た数字を数字別にカウントするにはどうすればよいのでしょうか?

現在ACCESSの勉強をしています。 1~6までの数字が書かれた6枚のカードから3枚を同時に引いて 出たカードの数字を記録していくデータベースを作るとき、 ・同時に引いた3枚が1,3,6だった時 「1」のレコードに同時に出たカードの数字、3.6をカウント 「3」のレコードに同時に出たカードの数字、1.6をカウント 「6」のレコードに同時に出たカードの数字、1.3をカウント 数字(1~6)ごとに同時に引いた残り2枚の数字を 記録していくクエリを作りたいのですが このような集計をするには どのようにクエリを作成すればよいのでしょうか? 作成方法がわかる方、ご助力をよろしくお願いいたします。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.3

簡単にするには、クエリを2つ作ります。 結果クロス集計にご希望の結果が得られます。 クエリ:結果クロス集計 SELECT 結果テーブル.[1枚目] AS 元, 結果テーブル.[2枚目] AS 相手 FROM 結果テーブル UNION ALL SELECT 結果テーブル.[1枚目] AS 元, 結果テーブル.[3枚目] AS 相手 FROM 結果テーブル UNION ALL SELECT 結果テーブル.[2枚目] AS 元, 結果テーブル.[1枚目] AS 相手 FROM 結果テーブル UNION ALL SELECT 結果テーブル.[2枚目] AS 元, 結果テーブル.[3枚目] AS 相手 FROM 結果テーブル UNION ALL SELECT 結果テーブル.[3枚目] AS 元, 結果テーブル.[1枚目] AS 相手 FROM 結果テーブル UNION ALL SELECT 結果テーブル.[3枚目] AS 元, 結果テーブル.[2枚目] AS 相手 FROM 結果テーブル; クエリ:結果ユニオン TRANSFORM Count(結果ユニオン.相手) AS 相手のカウント SELECT カードテーブル.カード FROM カードテーブル LEFT JOIN 結果ユニオン ON カードテーブル.カード=結果ユニオン.元 GROUP BY カードテーブル.カード PIVOT 結果ユニオン.相手 In (1,2,3,4,5,6);

kintetsu
質問者

お礼

回答ありがとうございます。 記入していただいた2つのクエリを作ったら 同時に出た数字の集計が出来ました。 No2の方とSQL文は違うのに 同じ結果になるとは… 奥が深いです… どのように組み合わせを発想するかが 肝要なのですね

その他の回答 (3)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.4

#3です。 クエリ名が逆でした。 上の方が「結果ユニオン」 下が「結果クロス集計」です。(--;

kintetsu
質問者

お礼

了解しました。

noname#15065
noname#15065
回答No.2

 なかなか難しいですね。テーブル1つとクエリ2つ追加でやってみました。 (1) テーブルの追加  まず、「ペアテーブル」を追加します。フィールドは「ペア」(数値型)1フィールドのみで、その内容は、 12 13 21 23 31 32 の6レコードとします。 (2) クエリの追加  次にクエリ「Q_同時に出たカード」を追加します。以下をSQLビューでペーストしたら、デザインビューに戻して構いません。 SELECT IIf(Left([ペア],1)=1,[1枚目],IIf(Left([ペア],1)=2,[2枚目],[3枚目])) AS カード, IIf(Right([ペア],1)=1,[1枚目],IIf(Right([ペア],1)=2,[2枚目],[3枚目])) AS 同時に出たカード FROM 結果テーブル, ペアテーブル; (3) クエリの追加(その2)  最後にクロス集計クエリを作成します。その内容は、 TRANSFORM Count(Q_同時に出たカード.同時に出たカード) AS 同時に出たカードの枚数 SELECT Q_同時に出たカード.カード FROM Q_同時に出たカード GROUP BY Q_同時に出たカード.カード PIVOT Q_同時に出たカード.同時に出たカード;  最後のクロス集計クエリを実行すると、ご所望の結果が得られると思います。

kintetsu
質問者

お礼

回答ありがとうございます。 教えていただいたとおり入力したら出来ました。 SQL文までまだ習ってないので それぞれの関数を調べつつやりました。 きっちりわかってないと操るのは難しそうですね。 がんばります。

noname#60992
noname#60992
回答No.1

現在のテーブルの構造では結果テーブルのフィールドの値と、最終的に表示させるテーブルのフィールド名を関係付けようとしているのでVBAを使用しないと難しいかもしれません。 結果テーブルの構造以下のようにを見直せば、簡単なクエリで済むと思います。 フィールド名 [回数],[1],[2],[3],[4],[5],[6] [1]~[6]のフィールドの値は、    引かれたカードの値を = 1    引かれなかったカードの値 = 0

kintetsu
質問者

お礼

回答ありがとうございます。 VBAはまだ扱えてないので 他の方法をあたってみます。

関連するQ&A

  • (ACCESS)今回出た数字を基準にして次回出た数字をカウントしたいのですが…

    1~6までの数字が書かれた6枚のカードから3枚を同時に引いて 出たカードの数字を記録していくデータベースを作るとき、 ・今回引いた3枚が(1).(3).(6)(区別のため()囲み数字にしました)  次回引いた3枚が1.4.5の時 「(1)」が出た次回の数字、1.4.5をカウント 「(3)」が出た次回の数字、1.4.5をカウント 「(6)」が出た次回数字、1.4.5をカウント 今回出たそれぞれの数字を基準にして 次回出た数字をカウントしていくクエリを 作成するにはどうすればよいのでしょうか?  ACCESSの造詣が深い方、ご助力をよろしくお願いいたします。 --------------------------------------------- 今現在あるテーブル ・結果テーブル…引いた3枚の数字を記録      テーブル 「結果テーブル」    フィールド名 「回数」「1枚目」「2枚目」「3枚目」(全て数値型) ・カード番号テーブル    フィールド名 「カード番号」    レコード数=6(カード番号=1,2,・・・6)数値型

  • ACCESSで2種類に分類してカウントするクエリを作りたいのですが…

    1~29までの数字が書かれた29枚のカードから5枚を同時に引き、 記録していくデータベースを作成するとき、 1~29が何回出てきたかを以下の種類によってカウントしたいのですが… ・同じレコードの他の数字の上一桁(一の位、十の位)の数が  「単数(1つ)」か「複数(2つ以上)」かによって  別カウントとして集計していきたいのですが。 (記録テーブル[全て数値型]) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 ------------------------------------------ (1)    1    2    3    4    10 (2)    1    2    3    10    11 (3)    1    10   11    12   20 (各番号テーブル) フィールド名「各番号」 レコード数=29 上記のような記録のとき 回数(1)は一の位が4個出現(1.2.3.4)なのでカウントは複数      十の位が1個出現(10)なのでカウントは単数 回数(2)は一の位が3個出現(1.2.3)なのでカウントは複数      十の位が2個出現(10.11)なのでカウントは複数 回数(3)は一の位が1個出現(1)なのでカウントは単数      十の位が3個出現(10.11.12)なのでカウントは複数      二十の位が1個出現(20)なのでカウントは単数 要約すると一の位と十の位と二十の位に分けて 同時に引いた5枚のうち それぞれの位が1つなのか複数なのかによって カウントを別に分けて集計したいのですが… ・作りたいもの (単数複数カウントクエリ) カード   単    複 ←単、複ごとに出た数をカウント ----------------------- 1      1      2 2      2 3      2 : 10      1      2 11            2 12            1 : 20      1 : 上記のようなクエリはどうやれば作れるのでしょうか? ご回答、よろしくお願いします

  • ACCESSである数字が出なかった時、次回のレコードを抽出したいのですが

    1~19までの数字が書かれた19枚のカードから5枚を同時に引き、 記録していくデータベースを作成するとき、 A.一の位(1~9)が1つも出なかった時の次回記録(次行)のレコードを抽出するクエリ B.十の位(10~19)1つも出なかった時の次回記録(次行)のレコードを抽出するクエリ 上記2つのクエリを作りたいのですが… (記録テーブル) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 ---------------------------------- (1)    1    4    5    7    9 (2)    1    2    3    10    12 (3)    10   12    13   16    18 (4)    1    2    3    4    5 (5)    5    6    7    15    16 上記の記録の時 A.一の位(1~9)が1つも出なかった時に該当するのは回数(3)なので その次回にあたる回数(4)を抽出 (クエリ1) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 -------------------------------------- (4)    1    2    3    4    5 B.十の位(10~19)1つも出なかった時に該当するのは回数(1)と回数(4)なので それぞれの次回にあたる回数(2)、回数(5)を抽出 (クエリ2) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 -------------------------------------- (2)    1    2    3    10    12 (5)    5    6    7    15    16 といったように 一の位が1つも出なかった次回のレコード、 十の位が1つも出なかった次回のレコードを 抽出するクエリ(SQL?)をそれぞれ 作成するにはどうすればよいのでしょうか? ご回答、よろしくお願いします。

  • ACCESSでこのように表示するにはどうすれば…よろしくお願いします

    現在ACCESSの勉強をしています 練習で赤、青、白の3色のサイコロを振って 出た目を記録していくデータベースを作成しようと思ったのですが 1、サイコロの目ごとに最近5回の出現回数をカウント 2、サイコロの目ごとに色別の出現回数をカウント をしたいのですが上記のように表示することは可能でしょうか? 多分、クエリを使うと思うのですが どのような条件を指定すればいいのか… テーブルも何か付け足さないと駄目だと思うのですが 考えれば考えるほどわからなくなっています。 ACCESSの知識が豊富な方 ご助力をよろしくお願いいたします。

  • (ACCESS)合計を求めたいのですが…

    赤、青、白の3色のサイコロを同時に振って 出た目を色ごとに記録していく データベースを作成しようとしています。 サイコロの目ごとに色別の出現回数を カウントしたクエリを さらに1まとめに合計したいと思い 色々いじくってみたのですが うまく出来ません。 集計して合計を出すには どうすればよいのでしょうか? ---------------------------------------------- テーブル サイコロテーブル      フィールド(回数、白色、青色、赤色)      目テーブル       レコード(サイコロの目=1,2,3,4,5,6) クエリ 選択クエリ(白、青、赤) 選択クエリ(まとめ)

  • (ACCESS)出た数字ごとに次回のレコードを抽出したいのですが…

    1~6までの数字が書かれた6枚のカードから3枚引き、 出たカードの数字を記録していく時 1,2,3,4,5,6それぞれの数字が出た次回(次行)のレコードを 抽出するクエリを作りたいのですが… (記録テーブル) 回数 1枚目 2枚目 3枚目 ---------------------------- (1)   1    2    6 (2)   2    5    6 (3)   1    4    5 (4)   3    5    6 上記の記録のとき、 1なら 1が出た次回にあたる、(2)回目と(4)回目のレコードを抽出。 ・1が出た次回のレコードを全て抽出 回数 1枚目 2枚目 3枚目 ---------------------------- (2)   2    5     6 (4)   3    4     5 2なら 2が出た次回にあたる(2)回目、(3)回目のレコードを抽出 ・2が出た次回のレコードを全て抽出 回数 1枚目 2枚目 3枚目 ---------------------------- (2)   2    5     6 (3)   1    4     5 3は今の所該当なし 4なら 4が出た次回にあたる(4)回目のレコードを抽出 5なら 5が出た次回にあたる(3)回目のレコードを抽出 6なら 6が出た次回にあたる、(2)回目、(3)回目のレコードを抽出。 といったように 1~6の数字をそれぞれ基準にして その数字が出た次回のレコードを抽出するクエリ(SQL文?)を 作成するにはどうすればよいのでしょうか?

  • アクセスフォームからのカウント

    下記画像のクエリをもとに集計フォームを作成しました。 そちらのフォームで数字1が入力されている数のカウント、数字2が入力されている数のカウント、数字1、数字2の入っている合計の数をカウントという3つの数字が欲しいのですが、フォームヘッダーにテキストボックスをつくり、コントロールソースに =Count([数字1])  =Count([数字2])等といれますと空欄の欄も数えてくれどちらか一つの情報が入っている全件の数字が出てきます。 どのようにしたら数字1が入力されている数のカウント、数字2が入力されている数のカウント、数字1、数字2の入っている数をカウントという3つの数字がでてきますか?

  • Accessの集計クエリで0カウント集計させない

    Accessの集計クエリで顧客のカルテ番号データからカウント集計クエリで一日の人数を表示しているのですが、 来店客が0の時(0)と入力してもカウント集計クエリでは1とカウントされてしまいます、 どうすれば来店客が0の時(0)と入力してもカウントされなくなるでしょうか

  • Accessクエリ結果をカウント(集計)する方法を教えてください。

    Accessクエリ結果をカウント(集計)する方法を教えてください。 111 111 222 とあった場合、 111 2 222 1 とカウントしたい。 教えてください。

  • アクセスで、条件を付けてカウントしたいです。

    アクセスで、条件を付けてカウントしたいです。 前回こちらで助けていただきました。 http://okwave.jp/qa/q5906286.html おかげで、ほしかったデータベースを作ることができとても感謝しております。 今回、そのデータベースを使い集計している最中に戸惑ってしまう点があり 再度質問させていただきます。 できあがったデータは、添付の画像のようになっています。 そこから来店回数ごとに○×をカウントしたいです。 たとえば、 1回の来店者でAの購入者は5人、Bの購入者は6人、Cの購入者は3人 といったように、一つのクエリで作成したいです。 http://mar1224.fc2web.com/site/access_index03.html こちらのように集計をカウントにして、○×の個数を出すことはできたのですが 一回の集計で複数の商品の購入の有無をデータ化することができませんでした。 目指すものとしては下記のようなデータにしたいです。 来店回数     A購入     B購入     C購入     D購入  1回      80人      90人      53人     24人        2回      70人      100人      74人     55人   3回      93人      44人      42人     77人   4回      55人      63人      23人     66人   5回      80人      90人      53人     24人   6回      80人      440人      52人     24人  Dcount関数を使ってみたのですが うまくいきませんでした。 ちなみに使った式としては A購入= DCount("名前", "3月の来店者データ", "A購入='○'") こちらにすると来店回数とうまく紐づけられませんでした。(トータルの○の個数が出てしまいます。) こちら初歩的な質問で申し訳ございませんが、 アドバイスいただけると幸いです・・・涙 よろしくおねがいいたします。

専門家に質問してみよう