Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Как оптимизировать запрос MySQL, сократив код?

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

gurugenn

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,
 
Подскажите, может кто то уже сталкивался.
Вкратце объясню суть. Имеется таблица: Участники. Каждый участник имеет своего спонсора в этой же таблице, а тот в свою очередь своего. За отслеживание отвечает поле ID спонсора.
 
   
 
Нужно относительно текущего участника вытащить из таблицы ID ближайшего к исходному участнику спонсора, чей флаг (поле Флаг) не равен нулю.
 
Например: Участник с ID = 1, проверяем флаг его спонсора и если он равен 0, переходим уже к его спонсору и так до бесконечности - пока не встретим первого последующего с флагом = 1.
 
Пока я реализую это такой громоздкой конструкцией с кучей запросов (только учусь):
 

Код:
 
//для этого по его ID  узнаём его Флаг и ID уже его спонсора...
$sp_flag1 = "SELECT `ID спонсора`,`Флаг` FROM `" . DATA_TABLE . "1` WHERE `id`='" . $sp['ID спонсора'] . "' AND `status`=0 LIMIT 1";
$spflag1 = sql_query($sp_flag1) or user_error(mysql_error() . "<br>" .    $sp_flag1 . "<br>", E_USER_ERROR);
$flag1 = sql_fetch_assoc($spflag1);
 
if ($flag1['Флаг'] == 1) {//если Флаг = 1, выполняем код...
 
    /*** КОД ***/
 
} elseif ($flag1['Флаг'] == 0) { //но если Флаг = 0, ищем дальше...
 
    //узнаём Флаг спонсора и ID уже его спонсора...
    $sp_flag2 = "SELECT `ID спонсора`,`Флаг` FROM `" . DATA_TABLE . "1` WHERE `id`='" . $flag1['ID спонсора'] . "' AND `status`=0 LIMIT 1";
    $spflag2 = sql_query($sp_flag2) or user_error(mysql_error() . "<br>" . $sp_flag2 . "<br>", E_USER_ERROR);
    while ($flag2 = sql_fetch_assoc($spflag2)) {
 
        if ($flag2['Флаг'] == 1) {//если Флаг = 1, выполняем код...
 
        /*** КОД ***/
 
        } elseif ($flag2['Флаг'] == 0) { //но если Флаг = 0, ищем дальше...
 
        /*** И так пока не будет найден первый спонсор с Флагом = 1. Как сделать поиск до бесконечности, чтобы конструкция не разрасталась? ***/
 
        }
    }
}
 

 
Как сделать поиск до бесконечности, чтобы конструкция не разрасталась? Если можно, то одним запрсом...

Всего записей: 3 | Зарегистр. 27-01-2015 | Отправлено: 08:30 25-03-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gurugenn
Есть же тема, зачем новую создавать?
Оптимизация запроса MySQL
 

Цитата:
Если можно, то одним запрсом...

с данной структурой в MySQL - нельзя. почитайте http://habrahabr.ru/post/43955/

Всего записей: 15108 | Зарегистр. 20-09-2014 | Отправлено: 08:35 25-03-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Как оптимизировать запрос MySQL, сократив код?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru