Итак, в основном, у меня есть таблица MySQL с именем 'themes', а другая, например, с именем 'answers'. В таблице 'themes' есть поле 'relforum', которое связывает эту тему с разделом форума. А в таблице «ответы» есть поле «reltopic», которое связывает ответ с темой. Обе таблицы имеют поле идентификатора, первичный ключ auto_increment.
Теперь я хочу выбрать все ответы на определенном форуме. Поскольку в поле «ответы» нет поля «relforum», мой путь будет таким:
- Выберите все темы с 'relforum', равным данному форуму, и просмотрите их
- Находясь в цикле, выберите все ответы из темы, которая сейчас обрабатывается
- Объединение всех результатов fetch_array в один многомерный массив, а затем их повторение.
Это примерно так:
$query = mysql_query("SELECT * FROM `topics` WHERE `relforum` = '1'");
while($array = mysql_fetch_array($query)) {
$temp = mysql_query("SELECT * FROM `replies` WHERE `reltopic` = {$array['id']}");
$results[] = mysql_fetch_array($temp);
}
Есть ли способ объединить все это в меньшее количество запросов? Потому что этот процесс в основном запускает один запрос на тему в этом форуме плюс один. Это было бы слишком много: P
Добавление поля relforum в таблицу ответов - это решение (я все еще разрабатываю часть БД, поэтому добавить ее не проблема), но хотелось бы посмотреть, есть ли решение.
Я действительно плохо разбираюсь в SQL, я знаю только базовые SELECT / INSERT / UPDATE, и я обычно генерирую последние два с помощью PHPMyAdmin, так что ... думаю, мне нужна помощь.
Спасибо за чтение!