У меня есть 3 запроса, которые я запускаю, которые почти идентичны, последние два имеют условие AND
.Добавление условия для запроса mysql и выборки снова
Основной запрос:
$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' >
}
Затем, во втором div
я должен добавить AND
условия:
$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
условия:
$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 очень все работает BUT делать это почти такой же запрос похоже неуклюжий. Можно ли построить одно и то же с одним запросом? Я использовал $mess->data_seek(0);
, но это не помогло, потому что я не добавил мое условие к запросу.
Как насчет того, что вы собираете большой набор, а затем уменьшаете его с помощью PHP и столбцов, которые у вас есть? –
Вы можете фильтровать, чтобы узнать, какая строка вставляется в соответствующий div, используя PhP, с вашим единственным запросом (третий). –
@JulienLachal это может произойти, если я забираю в один div, но это 3 разных div. И также другая проблема, в первом запросе у меня есть ограничение 30. так что если я запустил первые много данных, которые должны были прийти во второй div, не приходите. только если я поставлю это условие И, которое принесет только те и ограничит 30. –