アクセスでLOTO6のデータベースを作りました。
600万通りの組合せの中から、自分が設定した条件に
見合う組合せを選択したいと思います。
テーブルは
い・ろ・は・に・ほ・へ
の6つのフィールドがあり、それぞれ
1・2・3・4・5・6
から
38・39・40・41・42・43
までのすべての組合せが入っています。
設定したい条件としては
1.A1-6
B7-12
C13-18
D19-24
E25-30
F31-36
G37-43
というグループわけをした数字の組合せが
ABCCDE
などという配列の条件に組み合わされたとき。
2.偶数と奇数の比率が
2:4
3:3
などという割合になったとき
3.自分が希望する数字が組合せの中に含まれているとき
の三つです。
できればフォームで
条件1
配列:ABCDEF
条件2
比率:3:3
条件3
含める数:15
のように抽出を行いたいと思います。まず何から取り掛かればよいのか
そこからわからないので、申し訳ありませんが教えてください。
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
条件3がない場合だと10000通りぐらいは出てきそうな気がします。
超単純に考えても
6*6*6*6*6*6=46656通り
偶数奇数の比率も
0:6=1通り
1:5=6通り
2:4=15通り
3:3=20通り
4:2=15
5:1=6
6:0=1
・・・・64通り
15/64=0.234・・・10917通り
20/64=0.313・・・14650通り
約15000/43≒350
もっとも条件1が重複を許しているのでその分数は減るとは思いますが。
絞り込みをもっとしないと結構大変だと思います。
条件1をコンボボックス等を6個造って、絞り込みを行い、その値をもとにVBAでforループ等を使って組み合わせは出力できるので、その結果を保存するテーブルを造った方がいいかも。その後、条件2,条件3に合うようクエリーで絞り込むとできそうな気がします。チャレンジしますか?
ご意見ありがとうございます。
条件に設定する数字はもう少し増やそうと思っています。
例えば条件3:2 18
のように2数の設定です。
それでもまだまだ多いかもしれませんが。
ぜひともチャレンジしたいです。
No.4
- 回答日時:
アクセスじゃないんですが、一般的なSQLで書いてみました。
MySQL4.1 で試しています。
2430 ヒットしました。
アクセスのSQLだったら、この程度はかけるのでは。
SELECT N1.n,N2.n,N3.n,N4.n,N5.n,N6.n,
COUNT(N1.odd)+COUNT(N2.odd)+COUNT(N3.odd)+COUNT(N4.odd)+COUNT(N5.odd)+COUNT(N6.odd) AS odds
FROM (SELECT n,IF(MOD(n,2) = 1, 1, NULL) as odd
FROM Numbers
WHERE category='A') AS N1,
(SELECT n,IF(MOD(n,2) = 1, 1, NULL) as odd
FROM Numbers
WHERE category='B') AS N2,
(SELECT n,IF(MOD(n,2) = 1, 1, NULL) as odd
FROM Numbers
WHERE category='C') AS N3,
(SELECT n,IF(MOD(n,2) = 1, 1, NULL) as odd
FROM Numbers
WHERE category='D') AS N4,
(SELECT n,IF(MOD(n,2) = 1, 1, NULL) as odd
FROM Numbers
WHERE category='E') AS N5,
(SELECT n,IF(MOD(n,2) = 1, 1, NULL) as odd
FROM Numbers
WHERE category='F') AS N6
WHERE 15 IN (N1.n,N2.n,N3.n,N4.n,N5.n,N6.n)
GROUP BY N1.n,N2.n,N3.n,N4.n,N5.n,N6.n
HAVING odds = 3;
テーブルには、数字(n)、種別(category)が入っています。
ご意見ありがとうございます。
初歩的な質問で申し訳ないのですが、書いていただいたSQLというのは
Accessのモジュールに貼り付ければいいのでしょうか?
それともお書きのとおり、Accessとは違う何か他の
ソフトウェアで使用するものなのでしょうか。
No.5
- 回答日時:
さっきのより、こっちの方がいいですね。
結果は同じです。
SELECT N1.n,N2.n,N3.n,N4.n,N5.n,N6.n,
N1.odd+N2.odd+N3.odd+N4.odd+N5.odd+N6.odd AS odds
FROM (SELECT n,IF(MOD(n,2) = 1, 1, 0) as odd
FROM Numbers
WHERE category='A') AS N1,
(SELECT n,IF(MOD(n,2) = 1, 1, 0) as odd
FROM Numbers
WHERE category='B') AS N2,
(SELECT n,IF(MOD(n,2) = 1, 1, 0) as odd
FROM Numbers
WHERE category='C') AS N3,
(SELECT n,IF(MOD(n,2) = 1, 1, 0) as odd
FROM Numbers
WHERE category='D') AS N4,
(SELECT n,IF(MOD(n,2) = 1, 1, 0) as odd
FROM Numbers
WHERE category='E') AS N5,
(SELECT n,IF(MOD(n,2) = 1, 1, 0) as odd
FROM Numbers
WHERE category='F') AS N6
WHERE 15 IN (N1.n,N2.n,N3.n,N4.n,N5.n,N6.n)
HAVING odds = 3
No.6
- 回答日時:
アクセスでも、SQLを記述することができます。
若干、特殊な記法もありますが、
基本的には他のDBMSのSQLと同じです。
アクセスが手元にないんで、試してみることはできないんですが、
同等のことをアクセスでもできるはずです。
No.8
- 回答日時:
No2です。
遅くなりました^^;;チャレンジされると言うことですので、少しずつ行ってみましょうか^^
ちなみに、No4,5さんのSQLも結構おもしろくシンプルでよいのですが、
条件1を随時選択できないので、その都度SQL組み直す必要があります。
その条件の都度、そのSQLを生成するコードを書いていくのもおもしろいと思います。
ただ、下記のSQLはそのままではアクセスでは動かないので、関数や演算子をアクセス用に変えてあげる必要があります。
ちなみにSQLというのはアクセスや、そのほかのデータベースと言われる物をデータを取り出したり(抽出)、加工(変更、削除)したりすることをするための一般的な言語になっています。いろいろ決めごとがそれぞれあって、各データベースとも大まかには同じような命令などで操作できるようになっています。ただ、部分的に(結構)差違があって、それなりに変更をくわえないと動かなかったりします。
でも、知っていると便利ですよ
さて本題です。
下記のSQL利用してもよいのですがNo4さんのご意見もありますので、ここはシンプル(?)にアクセスのモジュールを使っていこうと思います。
1.まず、手っ取り早く
[Numbers]というテーブルを造りましょう。[]かっこはそれが何かの前だと言うことを示してあります。
でもって中身は
[N1],[N2],[N3],[N4],[N5],[N6]・・・ですべて数値型でOKです。値は43までなので整数型でいいと思います。
で。このテーブルにコードをつかってデータを書き込んでいきます。
2.モジュールタブをクリックして、次に新規作成を選んでください。
すると”Microsoft Visual Basic -dbname -[Module*(コード)]なるウインドウが開くと思います。
中央上段に(General)と書いてあるテキストボックスがあると思います。
その下の広い空間がコード(プログラム)を書く場所になります。
一番上の方に”Option *****”という行が1,行ないし2行ぐらいあるかもしれません。それはおまじないなのでそのままにしておいてください。
マウス等でその領域内をクリックしてカーソルを表示させて、上記のおまじないの下の方にコードを書いてみてください。(コピペでもいいと思います^^;;)
Sub test()
Debug.Print "This is TEST!!"
MsgBox "こんにちは!!"
End Sub
3.メニューバーから表示-イミディエイトウィンドウをクリックしてイミディエイトを表示させてください。(たぶんコードの下あたりに出てくると思います)
4.でてきたら、イミディエイトないでtestと入力してEnterキーをたたいてください。
メッセージボックス表示されましたか?
メッセージボックスを綴じるともとの画面に戻ると思いますが、イミディエイトにもメッセージが表示されていると思いますが確認してください。
まずはここまで。頑張ってみてください。
終了するときは、一番右上のペケで閉じるか、アクセスを終了すれば閉じたと思います。名前は適当でかまわないので保存しておいてね^^
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) 条件式書式の設定 3 2023/07/04 05:34
- Java Java 南京錠 2 2023/02/04 11:46
- 数学 数学A、確率の問題です。 nを4以上の自然数とする。数字の1からnが書かれたカードが1枚ずつ、合計n 3 2023/07/02 22:54
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) 【画像あり】A1が●+B1と同じ文字がB列にある+C1と同じ文字がC列にある場合D1に〇を付ける 3 2023/03/09 18:18
- Excel(エクセル) 【!】Excel 2つの条件付き書式が反映されません。。 5 2023/07/14 16:47
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQliteの日付検索について
-
Notion@リレーション値の取得...
-
QSL でのフォーム画面作成について
-
カラムが不定なデータベースの...
-
SqlServer2005 レプリケーショ...
-
Accessで2種類のデータベースを...
-
ユニオンクエリについて
-
SQL Server 2000 テーブル未使...
-
2台のサーバー間でのテーブル...
-
データベースを複数作ったほう...
-
ACCESS(VBA)について
-
Visuaal Studio Community 2022...
-
他のデータベースとのテーブル結合
-
Accessでデータシートに同じデ...
-
SELECT 文の NULL列は?
-
一つ前に戻るには…
-
複雑なSQL文について
-
update文で改行を入れる
-
件数とデータを同時に取得する...
-
PostgreSQLの断片化の状況を確...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
他のデータベースとのテーブル結合
-
SQliteの日付検索について
-
2台のサーバー間でのテーブル...
-
Visuaal Studio Community 2022...
-
Notion@リレーション値の取得...
-
ACCESS アクセスで他のデータ...
-
データベースを複数作ったほう...
-
Microsoft Access:クエリのフ...
-
Oracleのsystem表領域について
-
テーブル単位のエクスポート、...
-
SQL Server 2000 テーブル未使...
-
Accessで2種類のデータベースを...
-
ACCESS(VBA)について
-
カラムが不定なデータベースの...
-
バッチファイルを使ったテーブ...
-
PHPとMySQLを使った掲示板の作り方
-
[1000地域 × 10カテゴリー = 1...
-
Access 外部MDBのリンクテーブ...
-
【SQL Server】ローカルにDB構築
-
phpMyAdminの接続照合順序が勝...
おすすめ情報