私は3つのクエリを実行していますが、これはほぼ同じです。後者のクエリはAND
という条件を持っています。mysqlクエリに条件を追加して再度フェッチする
メインクエリ:
$mess2 = $mysqli->prepare("SELECT * from (SELECT cm.id ,cm.userid,cm.message,cm.voteup,cm.votedown,cm.date
FROM chat_messages cm
INNER JOIN members m ON m.id =cm.userid
INNER JOIN chat_settings cs ON cs.id = cm.room_id
WHERE cm.setting_id = ? AND voteup - votedown >= 5
ORDER BY cm.date DESC LIMIT 30) ddd
ORDER BY date ASC ");
$mess2->bind_param("i", $room);
$mess2->execute();
$mess2->store_result();
$mess2->bind_result($chatid,$chat_userid,$message,$voteup,$votedown,$date);
while($row2 = $mess2->fetch()){
//im fetching here in my <div class='div2' >
}
最後に、第三div
に、私は少し異なるAND
条件があります:
AND
条件を追加する必要が二
div
で次に
$mess = $mysqli->prepare("SELECT * from (SELECT cm.id ,cm.userid,cm.message,cm.voteup,cm.votedown,cm.date
FROM chat_messages cm
INNER JOIN members m ON m.id =cm.userid
INNER JOIN chat_settings cs ON cs.id = cm.room_id
WHERE cm.setting_id = ?
ORDER BY cm.date DESC LIMIT 30) ddd
ORDER BY date ASC ");
$mess->bind_param("i", $room);
$mess->execute();
$mess->store_result();
$mess->bind_result($chatid,$chat_userid,$message,$voteup,$votedown,$date);
while($row = $mess->fetch()){
//im fetching here in my <div class='div1' >
}
、
$mess3 = $mysqli->prepare("SELECT * from (SELECT cm.id ,cm.userid,cm.message,cm.voteup,cm.votedown,cm.date
FROM chat_messages cm
INNER JOIN members m ON m.id =cm.userid
INNER JOIN chat_settings cs ON cs.id = cm.room_id
WHERE cm.setting_id = ? AND votedown - voteup >= 5
ORDER BY cm.date DESC LIMIT 30) ddd
ORDER BY date ASC ");
$mess3->bind_param("i", $room);
$mess3->execute();
$mess3->store_result();
$mess3->bind_result($chatid,$chat_userid,$message,$voteup,$votedown,$date);
while($row3 = $mess3->fetch()){
//im fetching here in my <div class='div3' >
}
E非常にうまく動作しますしかし、これと同じことをやっているはややこしいようです。 1つのクエリで同じものを構築することは可能ですか?私は$mess->data_seek(0);
を使用しましたが、クエリに自分の条件を追加しなかったため役に立たなかった。
あなたは大きなセットを収集し、あなたが持っている列を使用してそれを減らすことはどうですか? –
PhPを使用して適切なdivにどの行を挿入するかをフィルタリングして、単一のクエリ(3番目のクエリ)でフィルタすることができます。 –
@JulienLachalこれは1つのdivで取得した場合に発生しますが、3つの異なるdivになります。また、他の問題は、最初のクエリで私は30を持っているので、もし私が2番目のdivに来るはずの最初の多くのデータを実行しないでください。私はこの条件を入れて、それらを持ち、30に制限する場合に限ります。 –