次のようなクエリを使用すると、タイプごとに10個のランダムな要素を取得できます。
select word from YOUR_TABLE where type = 'noun' order by rand() limit 10;
select word from YOUR_TABLE where type = 'adj' order by rand() limit 10;
次に、次のように、それらをPHPコードにまとめます。
$phrases = array();
$adj_result = mysql_query("SELECT word FROM words WHERE type = 'adj' ORDER BY RAND() LIMIT 10");
$noun_result = mysql_query("SELECT word FROM words WHERE type = 'noun' ORDER BY RAND() LIMIT 10");
while($adj_row = mysql_fetch_assoc($adj_result)) {
$noun_row = mysql_fetch_assoc($noun_result);
$phrases[$adj_row['word']] = $noun_row['word'];
}
print_r($phrases);
このコードはあまり安全ではないことに注意してください(2番目のクエリは常に最初のクエリと同じ数の結果を生成することを前提としています)が、あなたはその考えを理解しています。
編集:これを実行する必要がある単一のSQLクエリは次のとおりです:
select t1.word, t2.word
from
((select word from YOURTABLE where type = 'adj' order by rand()) as t1),
((select word from YOURTABLE where type = 'noun' order by rand()) as t2)
order by rand()
limit 10;
編集:削除された例