値を持つ連続する行の数を数えようとしています。簡単な例を与えるために、1から12の値を与える2つのダイスがスローされると考えます。私は同じ合計を持つ連続した行の最高のシーケンスの値のテーブルを取得したい。ここでは、テーブル定義、テーブルやストアドプロシージャを実行するコマンドを移入するストアドプロシージャです:特定の値のシーケンスMySqlテーブル
CREATE TABLE `Dice_throws` (
`idx` int(11) NOT NULL AUTO_INCREMENT,
`Dice1` tinyint(1) DEFAULT NULL,
`Dice2` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`idx`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
---------------------------------
DELIMITER $$
CREATE PROCEDURE InsertDiceThrows(IN NumRows INT)
BEGIN
DECLARE i INT;
SET i = RAND(12345); /* use the same seed */
SET i = 1;
START TRANSACTION;
WHILE i <= NumRows DO
INSERT INTO Dice_throws(Dice1, Dice2) VALUES (CEIL(RAND() * 6), CEIL(RAND() * 6));
SET i = i + 1;
END WHILE;
COMMIT;
END$$
DELIMITER ;
-----------------------------
call InsertDiceThrows(2000);
合計(SELECT Dice1, Dice2, Dice1+Dice2 FROM Dice_throws order by idx;
)のリストを選択した場合、私はいてもよく、2000行を取得します、のためにインスタンス2,5,12,6,7,4,8,8,8,5,11,6,6,
など。 それの終わりに、私はこのようなテーブルに何かしたい:
Tot Seq
1 2
2 2
3 4
4 3
5 7
6 8
7 9
8 4
9 2
10 1
11 2
12 1
だから、これは合計は4だった、連続する行の最大シーケンスが3で、かつ合計が6などだった8つの連続行することを示していますだから私は可能な結果ごとに同じ合計で最高のロール順番を見つけたいと思っています。 私は明らかに結果セットをループして総計を選択するだけで、PHPでこれを行うことができますが、SQLで完全にそれを行う良い方法があるのだろうかと思いました。 ヒントや解決策をありがとう。
我々は、ランダムにテーブルを移入した場合、私たちはあなたから異なるデータセットで終わるつもりです。したがって、適切なINSERT文とそれに対応する望ましい結果を提供してください。私たちは2000行を見る必要はないと確信しています。それが単一の6面のダイであるとふりをして、私は確かに数十列で充分だろう。あなたが専門的に賭けるならば、次の重要な事実を取り除きたいかもしれません:2つのダイスで達成できる最低得点は... 2 !! – Strawberry
チップをありがとう。私はどのセットの実際の結果にも興味がありません。達成する方法を理解することに興味があります。 –