У меня есть форум, где пользователи могут оставлять вопросы, комментировать и твитнуть.
Я хочу получить все comments
а также tweets
каждого поста.
То, что я сделал ранее, было сделать это в 3 набора запросов.
$data = mysqli_query($con,"select * from posts");
while($row = mysqli_fetch_assoc($data)){
$pid = $row['post_id'];
$dataCo = mysqli_query("SELECT comments.* FROM comments WHERE post_id = $pid");
$dataTw = mysqli_query("SELECT tweets.* FROM tweets WHERE post_id = $pid");
//2 while loop for comments and tweets
}
Может кто-нибудь показать мне, как я могу сделать эти вещи в один запрос потому что, если получить много posts
в первом запросе будет много запросов.
ИЛИ ЖЕ
Может быть, есть более быстрый способ сделать?
Может быть, вы можете использовать Mysql IN
http://www.tutorialspoint.com/mysql/mysql-in-clause.htm
В вашем примере у вас всегда 2 * n + 1 запросов к БД. Где n в количестве возвращаемых строк в этом запросе
$data = mysqli_query($con,"select * from posts");
Если вы используете mysql IN Clause, у вас будет только 3 запроса.
Ваши запросы должны выглядеть так
$dataCo = mysqli_query("SELECT comments.* FROM comments WHERE post_id IN (1,2,3,4)");
$dataTw = mysqli_query("SELECT tweets.* FROM tweets WHERE post_id IN (1,2,3,4)");
Числа «1,2,3,4» возвращаются post_id в вашем первом вопросе.
Других решений пока нет …