Чтобы иметь хорошо скремблированную таблицу (для психологического эксперимента), я хотел бы отсортировать каждый столбец моего массива с помощью RAND(). Althrough этот код работает:MySQL: применение случайного сортирования по нескольким столбцам
SELECT Sort.Variable1, Sort.Variable2 FROM Sort ORDER BY Variable1, Variable2 ASC LIMIT 0 , 30
замена "ASC" на "RAND()" сделать запрос неудачей. Может ли кто-нибудь дать мне совет (даже решение с PHP)?
Благодаря
Edit:
Благодаря все ваши ответы, я, наконец, сделал это. Вот мой PHP-код для этого (и извините за старые-не-brand-new-PDO-запросы). Даже если это возможно, бесполезно, я его:
$i=0;
//Describe to retrieve variables' names
$sqlCol= 'DESCRIBE Sort';
$sqlCol= mysql_query($sqlCol);
while ($res=mysql_fetch_array($sqlCol)) {
$var[$i]=$res['Field'];
$i++;
}
$NbCol=mysql_num_rows($sqlCol); //Number of column to shuffle
// Number of items for each column
$sqlCount= 'SELECT COUNT(*) FROM Sort';
$req2= mysql_query($sqlCount) or die ('Err');
$NbLignes= mysql_result($req2,0,0) or die();//Number of rows
//Data array
$sql= "SELECT * FROM Sort";
$req= mysql_query($sql) or die ('Err');
$sort=mysql_fetch_array($req);
for($i=0;$i<$NbCol;$i++) {
${'sql'.$i}='SELECT * FROM Sort ORDER BY RAND()';
${'input'.$i} = mysql_query(${'sql'.$i});
while(${'array'.$i}=mysql_fetch_array(${'input'.$i})) {
$bigArray[$i][]=${'array'.$i}[$i];
}
}
for($i=0;$i<$NbLignes;$i++) {
echo '<div id="q'.$i.'"style="margin-bottom: 50px; float:left">Question '.($i+1);
echo '<ul id="sortable'.$i.'" class="sortable">';
for($j=0;$j<$NbCol;$j++) {
echo '<li class="ui-state-default" id="'.$var[$j].$i.'" name="'.$var[$j].$i.'">'. $bigArray[$j][$i].'</li>';
}
echo '</ul></div>';
}
Можете ли вы объяснить, почему 'ORDER BY RAND()' не будет делать? –
Вы уже не задавали этот вопрос в немного другом обличье? Http: // StackOverflow.com/questions/3075115/mysql-php-order-each-column-of-a-array-randomly – Mike
Я не буду отрицать, что вы прав; Я пробовал все возможное, чтобы сделать это с помощью PHP (while, for, shuffle() ...) с двух дней, и я просмотрел все сообщения по этому вопросу, но не могу найти подходящий способ заставить его работать , Мне жаль, что опубликуйте это снова в другой оболочке, но эта проблема действительно сводит меня с ума, и я смотрю на все возможные способы преодоления этой проблемы. – Coronier