0

この作業を行うには、PHP またはその他の言語が必要になる場合がありますが、MYSQL で直接解決することをお勧めします。

昨年のニューヨーク州の宝くじの当選番号のリストをまとめました。データを格納するために MYSQL に 4 列のテーブルを作成しました。1 つは日付用、1 つは当選番号用、1 つはボーナス番号用、もう 1 つはペイアウト用です。宝くじの番号 (int の配列と見なす) を格納する方法について少し調べたところ、longtext データ型を使用することをお勧めすることがわかりました。データは、01|34|35|36|56|59 のように各値をパイプで区切って入力します。数字は常に昇順で、2 桁が与えられ、59 を超えることはありません。

私のプロセスの次のステップは、各数値が発生する頻度を示す表を作成することです。これが私の疑似コードです。

1 Create table "Number_Frequency"
2 Create column "Number"(Type int)
3 Create column "Frequency"(Type int, initial value 0)
4 Look at table "new_table"
5 Look at column "numbers"
6 Look at first row
7 Look at first two digits
  7A If this two digit number isn't in the column "Number" in the table "Number_Frequency", add to column "Number" in table "Number_Frequency" and set corresponding "Frequency" to 1
  7B Else if number is already in column "Number" increase the value of frequency by 1
8 Look for a pipe symbol
  8A If there is a pipe symbol, repeat all parts of step 7 for the next two digits after the pipe symbol.
  8B Else if there is another row, look at the first two digits of that row, and start from step 7A
  8C Else terminate.

ご覧のとおり、私は自分が何をしたいのかについて非常に明確な考えを持っています。SO についていくつか簡単な質問があります。MYSQL だけでこれを行うことはできますか? さらに重要なことに、わざわざ挑戦してはいけない大きな明確な理由はありますか? あるとすれば、その理由は何ですか?

4

1 に答える 1

1

固定サイズの数値のセットを連結された文字列として格納するのは狂気です。

それぞれが整数型の6つの別々の列にそれらを格納することを検討してください。または、次の2つの列のみを持つテーブルにそれらを格納しdraw_idますvalue。各抽選には、このテーブルに6つのエントリがあります。次に、特定の値の出現回数を探すクエリを作成するのは簡単です。

だから次のようなもの:

draw_values
===========

draw_id       value
-------------------
538           1
538           34
538           35
538           36
538           56
538           59
539           5
539           10
539           13
539           27
539           38
539           56
...


draw
====

draw_id       winner_id       payout
---------------------------------------
538           127740          1000000
539           839820          1500000
...

ここdraw_idで、メインテーブルへの外部キーがあります。これには、各ドローの1回限りの詳細(ペイアウトなど)が含まれています。

于 2011-11-09T00:57:06.573 に答える