Ben üzerinde çalışıyorum bu proje kadar MySQL DB rasgele SEÇ yapmak için bir ihtiyaç yoktu. Araştırma yaptıktan sonra bu genel kalabalık RAND () kullanarak kötü bir fikir olduğunu söylüyor gibi görünüyor. Ben rastgele seçme başka tür yapmak için nasıl açıklayan bir makale bulunamadı.
Ben beş (5) rasgele öğeleri seçmek istiyorsanız Temelde, (Ben burada Kohana framework kullanıyorum) aşağıdakileri yapmanız gerekir?
<?php
final class Offers extends Model
{
/**
* Loads a random set of offers.
*
* @param integer $limit
* @return array
*/
public function random_offers($limit = 5)
{
// Find the highest offer_id
$sql = '
SELECT MAX(offer_id) AS max_offer_id
FROM offers
';
$max_offer_id = DB::query(Database::SELECT, $sql)
->execute($this->_db)
->get('max_offer_id');
// Check to make sure we're not trying to load more offers
// than there really is...
if ($max_offer_id < $limit)
{
$limit = $max_offer_id;
}
$used = array();
$ids = '';
for ($i = 0; $i < $limit; )
{
$rand = mt_rand(1, $max_offer_id);
if (!isset($used[$rand]))
{
// Flag the ID as used
$used[$rand] = TRUE;
// Set the ID
if ($i > 0) $ids .= ',';
$ids .= $rand;
++$i;
}
}
$sql = '
SELECT offer_id, offer_name
FROM offers
WHERE offer_id IN(:ids)
';
$offers = DB::query(Database::SELECT, $sql)
->param(':ids', $ids)
->as_object();
->execute($this->_db);
return $offers;
}
}
Eğer değilse, daha iyi çözüm nedir?