Вставка случайного значения в базу данных MySQL - PullRequest
0 голосов
/ 22 ноября 2010

У меня есть 52 элемента, которые я случайно вставляю в базу данных с помощью функции php rand.

Каждый элемент имеет идентификатор от 1 до 52, а также имеет значение. Каждые 13 предметов имеют значение 1 - 13. Например,

Элементы 1 - 13 имеют значения 1 - 13, в то время как элементы 14 - 26 также имеют значения 1 - 13 и т. Д. До последнего элемента, 52. Как я могу убедиться, что значение корректно при вставке в базу данных ? Я предположил бы, что модуль вовлечен? Я думаю, это больше математический вопрос, чем база данных!

Ответы [ 3 ]

1 голос
/ 22 ноября 2010

Если вы хотите сделать это исключительно в SQL, я бы сделал это следующим образом

Сначала определите таблицу, в которой перечислены нужные значения по порядку.

CREATE TABLE cards (
   id int auto_increment,
   card int,
   PRIMARY KEY(id)
);
INSERT INTO cards(card) VALUES(....);

Теперь вы можете создать рандомизированную таблицу, подобную этой

CREATE TABLE shuffled (
   id int auto_increment,
   card int,   
   PRIMARY KEY(id),
)
SELECT 0,card FROM cards ORDER BY RAND();
0 голосов
/ 22 ноября 2010

Поскольку вы знаете идентификатор в PHP,

$value = $id % 13; 
if ($value == 0) $value = 13;

Оператор % (также известный как модуль) дает нам остаток, когда x делится на y. Вторая строка дает нам 13 вместо 0 для кратных 13, поскольку модуль вернет 0, но вместо этого мы хотим 13.

0 голосов
/ 22 ноября 2010

Звучит так, будто вы тасуете колоду карт.Я считаю, что есть функция shuffle (), которая делает то, что вы хотите (если вы используете PHP)

Если это просто запрос кода для этого, то, очевидно, мой ответплохой.Кроме того, если вы хотите сделать это только в SQL, это плохой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...