質問: 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)数値型
回答: だんだん、難しくなってきますね。 クエリを2つ作ります。 次の目クロス集計にご希望の結果が得られます。 わかりやすくするためには、 サブクエリを独立したクエリにした方が良いかも。 クエリ:目ユニオン SELECT 回数, [1枚目] AS 目 FROM 結果テーブル UNION ALL SELECT 回数, [2枚目] AS 目 FROM 結果テーブル UNION ALL SELECT 回数, [3枚目] AS 目 FROM 結果テーブル; クエリ:次の目クロス集計 TRANSFORM Count(Q次の目.次回) AS 次回のカウント SELECT カードテーブル.カード FROM カードテーブル LEFT JOIN [SELECT Q今回.目 AS 今回, Q次回.目 AS 次回 FROM 目ユニオン AS Q今回, 目ユニオン AS Q次回 WHERE (((Q次回.回数)=Q今回!回数+1));]. AS Q次の目 ON カードテーブル.カード = Q次の目.今回 GROUP BY カードテーブル.カード PIVOT Q次の目.次回 In (1,2,3,4,5,6);