All_ex74
Новичок
Здравствуйте,
Подскажите, может кто то уже сталкивался.
Вкратце объясню суть. Имеется таблица: Участники. Каждый участник имеет своего спонсора в этой же таблице, а тот в свою очередь своего. За отслеживание отвечает поле ID спонсора.
Нужно относительно текущего участника вытащить из таблицы ID ближайшего к исходному участнику спонсора, чей флаг (поле Флаг) не равен нулю.
Например: Участник с ID = 1, проверяем флаг его спонсора и если он равен 0, переходим уже к его спонсору и так до бесконечности - пока не встретим первого последующего с флагом = 1.
Пока я реализую это такой громоздкой конструкцией с кучей запросов (только учусь):
Как сделать поиск до бесконечности, чтобы конструкция не разрасталась? Если можно, то одним запрсом...
Или может что то посоветуете...
Подскажите, может кто то уже сталкивался.
Вкратце объясню суть. Имеется таблица: Участники. Каждый участник имеет своего спонсора в этой же таблице, а тот в свою очередь своего. За отслеживание отвечает поле 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. Как сделать поиск до бесконечности, чтобы конструкция не разрасталась? ***/
}
}
}
Или может что то посоветуете...