Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как сократить число запросов
 
 автор: gurza   (11.10.2005 в 16:03)   письмо автору
 
 

как мне уменьшить число запрсов к базе
вот код

echo "<b>Мои Друзья</b><hr>";



   

    $sql = "SELECT * FROM ".$prefix."_myfriends_friends WHERE id='$id'";
    $result = $db->sql_query($sql);
    $cont = 0;
    $tdwidth = intval(100/$tabcolumn);
    echo "<center><table border=\"0\" cellspacing=\"0\" cellpadding=\"6\"><tr><td valign=\"top\" width=\"".$tdwidth."%\">";
    while ($row = $db->sql_fetchrow($result)) {
    $friend = $row["friend_id"];
    $sql2 = "SELECT * FROM ".$prefix."_myfriends WHERE id='$friend'";
    $result2 = $db->sql_query($sql2);
    $row = $db->sql_fetchrow($result2);
  
  

    
    echo "<center><a href=\"modules.php?name=$module_name&amp;op=friend&user_id=$friend\"><img src='modules/MyFriends/foto/img.php?file=".$row["foto"]."' border='0'></a><br><b>".$row["nik"]."</b> (".$row["age"].")";


    $cont++;

        if ($cont < $tabcolumn) { echo "</td><td valign=\"top\" width=\"".$tdwidth."%\">";  }
        if ($cont == $tabcolumn) { echo "</td></tr><tr><td valign=\"top\" width=\"".$tdwidth."%\">"; $cont = 0; }

    }


    echo "</td></tr></table></center>";


как можно эти 2 запроса обьеденить

   
 
 автор: Loki   (11.10.2005 в 20:51)   письмо автору
 
   для: gurza   (11.10.2005 в 16:03)
 

Очень похоже на рекурсивный спуск.
А что должен этот код делать?

   
 
 автор: gurza   (11.10.2005 в 22:54)   письмо автору
 
   для: gurza   (11.10.2005 в 16:03)
 

этот запрос

$sql = "SELECT * FROM ".$prefix."_myfriends_friends WHERE id='$id'"; 
    $result = $db->sql_query($sql); 
    $cont = 0; 
    $tdwidth = intval(100/$tabcolumn); 
    echo "<center><table border=\"0\" cellspacing=\"0\" cellpadding=\"6\"><tr><td valign=\"top\" width=\"".$tdwidth."%\">"; 
    while ($row = $db->sql_fetchrow($result)) { 
$friend = $row["friend_id"]; 

выбирает из базы всех юзеров у которых id=$id
а этот запрос уже с другой таблицы по id юзера выбирает инфу о нем
foto,age,nik

$sql2 = "SELECT * FROM ".$prefix."_myfriends WHERE id='$friend'"; 
    $result2 = $db->sql_query($sql2); 
    $row = $db->sql_fetchrow($result2); 
   




проблема в том что чем больше юзеров тем больше запросов к базе

как избежать этого?

   
 
 автор: cheops   (11.10.2005 в 23:48)   письмо автору
 
   для: gurza   (11.10.2005 в 22:54)
 

Приведите плиз структуру таблиц - у нас их нет перед глазами, поэтому сложно сориентироваться - скорее всего можно воспользоваться многотабличным запросом.

   
 
 автор: gurza   (12.10.2005 в 23:10)   письмо автору
 
   для: cheops   (11.10.2005 в 23:48)
 

спасибо за помощ но уже сам разобрался
и вот как это выглидит

echo "<b>Мои Друзья</b><hr>";


$result = $db->sql_query(" SELECT p.id, p.friend_id, c.id, c.foto, c.age, c.nik
                          FROM ".$prefix."_myfriends_friends as p
                          LEFT JOIN ".$prefix."_myfriends as c on (p.id=c.id)
                          WHERE p.friend_id='$id'");

   

   
    $cont = 0;
    $tdwidth = intval(100/$tabcolumn);
    echo "<center><table border=\"0\" cellspacing=\"0\" cellpadding=\"6\"><tr><td valign=\"top\" width=\"".$tdwidth."%\">";
    while ($row = $db->sql_fetchrow($result)) {
    
  

    
    echo "<center><a href=\"modules.php?name=$module_name&amp;op=friend&user_id=$row[id]\"><img src='modules/MyFriends/foto/img.php?file=".$row["foto"]."' border='0'></a><br><b>".$row["nik"]."</b> (".$row["age"].")";


    $cont++;

        if ($cont < $tabcolumn) { echo "</td><td valign=\"top\" width=\"".$tdwidth."%\">";  }
        if ($cont == $tabcolumn) { echo "</td></tr><tr><td valign=\"top\" width=\"".$tdwidth."%\">"; $cont = 0; }

    }


    echo "</td></tr></table></center>";

   
 
 автор: gurza   (13.10.2005 в 14:06)   письмо автору
 
   для: gurza   (12.10.2005 в 23:10)
 

а можно ли в этот запрос добавить еше запрс в третью таблицу
там будет nik из таблици 2 = uname из таблици 3
вот таблица 3

uname___host_adr
gurza____127.0.0.1
muha____127.0.0.1

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования