PDA

View Full Version : سوال: چگونگی استخراج ده رکورد تصادفی



ahmadbadpey
یک شنبه 07 مهر 1387, 11:34 صبح
با سلام من برای سایتم یه قسمتی با عنوان ده مطلب تصادفی می خوام درست کنم . برای این کار کدی نوشتم که ابتدا یه رکورد رو به صورت تصادفی انتخاب می کنه و به همراه 9 رکورد بعدی خودش بر می گردونه . مشکلی که هست اینه که ممکنه رکوردی که تصادفی انتخاب میشه 10 رکورد آخری باشه که در این صورت دیگه رکوردی نیست که نمایش بده . به عنوان مثال فرض کنیم 30 تا رکورد داریم و رکوردی که به صورت تصادفی انتخاب شده 28 باشه در این صورت فقط دو رکورد رو برمی گردونه . به هرحال اگه کسی راه حلی داره پیشنهاد کنه.

iflashlord
یک شنبه 07 مهر 1387, 14:46 عصر
خوب این کار شما از اساس اشتباه می باشد
شما می بایست یک کوری از کد بگیری با لیمیت 10 خوب حالا کافی که از کد زیر در اس کیو ال استفاده کنی

SELECT * FROM TABLE ID ORDER BY rand() LIMIT 10
TABLE نام جدول مورد نظر
ID نام بخشی که می خواهید مرتب سازی اتفاقی بر طبق آن صورت بگیرد

ahmadbadpey
یک شنبه 28 مهر 1387, 19:14 عصر
خوب این کار شما از اساس اشتباه می باشد
شما می بایست یک کوری از کد بگیری با لیمیت 10 خوب حالا کافی که از کد زیر در اس کیو ال استفاده کنی

SELECT * FROM TABLE ID ORDER BY rand() LIMIT 10
TABLE نام جدول مورد نظر
ID نام بخشی که می خواهید مرتب سازی اتفاقی بر طبق آن صورت بگیرد
خوب بازم یه مشکلی پیش می آد . فرض کنیم 15 رکورد داریم و عددی که به صورن رندوم انتخاب میشه 10 باشه در نتیجه باید رکورد های 10 تا 20 نمایش داده بشه که کل مطالب ما 15 تاست و 5 تا کم می آریم . من می خواستم بدونم که چه جوری میشه این مشکل رو حل کرد.
لطفا یه کسی جواب بده

kashaneh
دوشنبه 29 مهر 1387, 01:56 صبح
از كد زير استفاده كنيد


SELECT top 10 * FROM TableName ORDER BY NEWID()

به جاي TableName هم نام جدول خودتو بزار
براي تعداد ركورد تصادفي بيشتر يا كمتر، عدد 10 رو تغيير بده

** نكته : اين كوئري روي بانك اطلاعاتي Access جواب نميده و روي باقي بانكهاي اطلاعاتي مشكلي نداره

موفق باشي

as13851365
دوشنبه 29 مهر 1387, 09:25 صبح
بهتر است از کد زیر استفاده کنید !
select * from table1 order by rand() limit 10

با اجرای این دستور تعداد 10 تا از رکورد های موجود به صورت تصادفی انتخاب می شن که حالا شما بسته به کارتون می تونید ازش استفاده کنید !

در ضمن برای این که خطایی رخ نده ( به عنوان مثلا اگر کل رکورد های شما 8 تا باشه و شما دستور بالا رو اجرا کنید همین 8 رکورد رو برای شما نشان خواهد داد ) بهتر است از یک حلقه while برای خوندن رکورد ها استفاده کنید !

این هم یک نمونه کد


<?php
$q="select * from $table order by rand() limit 10";
$r=mysql_query($q);
if($r)
{
while($a=mysql_fetch_array($r))
{
?>
<tr>
<td align="right"><?php echo"$a[name]"; ?></td>
<td align="right"><?php echo"$a[family]";?></td>
<td align="right"><?php echo"$a[tel]"; ?></td>
<td align="right"><?php echo"$a[addres]"; ?></td>
</tr>
<?php
}
mysql_close($db);
}