Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kombinieren Sie zufällig zwei Wörter aus einer MySQL-Datenbank

Mit Abfragen wie dieser können Sie 10 zufällige Elemente pro Typ erhalten:

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;

und füge sie dann wie folgt in deinem PHP-Code zusammen:

$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);

Bitte beachten Sie, dass dieser Code nicht sehr sicher ist (er geht davon aus, dass die zweite Abfrage immer mindestens so viele Ergebnisse liefert wie die erste), aber Sie verstehen schon.

Bearbeiten:Hier ist eine einzelne SQL-Abfrage, die es tun sollte:

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;

BEARBEITEN:Beispiel entfernt