2012-04-09 20 views
0

"nameid"と "name"の2つのカラムだけを持つSQLテーブルがあります。私はデータベースからランダムな名前を取得したい。Doctrine:名前のテーブルからランダムな名前を取得

私は前にこの経由:

$result = mysql_query("SELECT * FROM nametable",$db); 
    $number = mysql_num_rows($result); 
    $random = rand(1,$number); 
    list($name) = mysql_fetch_row(mysql_query("SELECT name FROM nametable WHERE nameid=$random",$db)); 

がどのように私は教義と同じことを行うことができますか?

答えて

0

MySQLには、ランダム浮動小数点値RAND()を生成する関数があります。これをソートすると、名前はランダムに並べ替えられます。その後、最初にランダムに順序付けられた名前を選択するだけです。教義と

SELECT name FROM nametable ORDER BY RAND() LIMIT 1 

、これは

$name = Doctrine::getTable('nametable') 
    ->createQuery() 
    ->select('name') 
    ->orderBy('RAND()') 
    ->fetchOne(); 
+0

感謝を使用して行うことができます!私はあなたがCodeIgniter2 + Doctrine2でどのように表示されるかを知っているとは思わないでしょうか? :) – jeremy

+0

私はCodeIgniterでDoctrineを使うのは上記と同じだと思います。 CodeigniterのActive Recordを使いたいのであれば、 '$ this-> db-> select( 'name') - > from( 'nametables') - > order_by( 'name'、 'random' > limit(1) 'となります。 – kba

関連する問題