как оптимизировать многочисленные запросы к базе

Spiritum

Новичок
приветствую, есть несколько вопросов. с mysql знаком немного, потому прошу сильно не пинать если задаю глупые вопросы.
1. Есть запрос в базу и цикл while($row=mysql_fetch_array($result)) внутри которого лежит еще один запрос в базу и еще один цикл. Выглядит оно примерно следующим образом:
PHP:
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
	$sql="select * from comments where xid='".$row[0]."' and `type`=2 order by id desc";
	$result_com=mysql_query($sql);
	while($rowc=mysql_fetch_array($result_com)){		
		echo "Parampampam";
	}
}
Можно ли каклибо оптимизировать код таким образом чтобы не делать внутренний запрос к базе каждый раз, а вынести его перед первым циклом?

2. Есть $result=mysql_query($sql); как вытащить первую строку при этом не удаляя из $result?
То есть например в $result лежит десять строчек. я хочу вывести несколько раз значения из первой строки, а потом используя следующий цикл перебрать опять все 10 строчек.
PHP:
while($row=mysql_fetch_array($result)){
	....
}
 

Spiritum

Новичок
1) Вы не показали первый запрос.
А вообще - использовать соединения (join).
первый запрос такой $sql="select * from camp c left join quotes q on q.id=c.quote where c.user_id='".$_SESSION['user_id']."' order by c.status desc";
Можно поподробнее по поводу join как это можно реализовать?
 

Фанат

oncle terrible
Команда форума
по поводу join это можно реализовать точно так же, как в первом запросе. в котором join тобой уже используется.
добавить еще один джойн.
но судя по названиям таблиц, запросы выглядят странно. ни каунтов, ни лимитов. какая вообще задача стоит?

по поводу второго вопроса - получить все в цикле в массив и потом делать с этим массивом все что угодно.
 

Фанат

oncle terrible
Команда форума
поможет, но это будет в 10 раз больше кода и в 10 раз меньше смысла.

ОСОБЕННО учитывая тот факт, что при формировании веб-страницы ВСЕ РАВНО надо сначала получать данные из базы в массив, а потом уже из этого массива выводить
 
Сверху