dポイントプレゼントキャンペーン実施中!

環境:XP&Apache2&MySQL5&PHP5
examinというテーブルがあります。
全部で80レコードあり、このうちの20レコードを任意に表示させます。
$qq ="select * from examin ORDER BY RAND() LIMIT 20";
$qu = mysql_query($qq);
while($ro=mysql_fetch_assoc($qu)) {

ここまでは出来るのですが、
examinのフィールドに表示させる順番を持たせ、(grpaというフィールド名にしました)
例えばgrpaが値1のもの(実際は4レコード)を任意に1レコード最初に表示させ、
grpaが値3のもの(実際は3レコード)を任意に1レコード3番目に表示させ、
grpaが値20のもの(実際は6レコード)を任意に1レコード20番目に表示させる、
という方法がわかりません。

$qq1 ="select * from examin where `grpa`=1 ORDER BY RAND() LIMIT 1";
$qu1 = mysql_query($qq1);
$qq2 ="select * from examin where `grpa`=2 ORDER BY RAND() LIMIT 1";
$qu2 = mysql_query($qq2);
--
$qq20 ="select * from examin where `grpa`=20 ORDER BY RAND() LIMIT 1";
$qu20 = mysql_query($qq20);
とやって最後に
while($ro=mysql_fetch_assoc($qu)) {
の$quの部分を加工すればいいのかな、とも思いますが、
どうすればいいか思いつきません。

アドバイスいただけると幸いです。

A 回答 (1件)

$qq = "select * from examin where `grpa`=1 ORDER BY RAND() LIMIT 1 union ";


$qq = $qq + "select * from examin where `grpa`=2 ORDER BY RAND() LIMIT 1 union ";
$qq = $qq + "select * from examin where `grpa`=3 ORDER BY RAND() LIMIT 1 union ";
$qq = $qq + "select * from examin where `grpa`=4 ORDER BY RAND() LIMIT 1 union ";
$qq = $qq + "select * from examin where `grpa`=5 ORDER BY RAND() LIMIT 1 union ";
$qq = $qq + "select * from examin where `grpa`=6 ORDER BY RAND() LIMIT 1";
以下略。
    • good
    • 0
この回答へのお礼

ありがとうございました。
大変参考になりました。助かりました。

お礼日時:2008/10/24 10:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!