Мы тут в экстрасенсов играем.
Но вот вариант с php и группировками был же.
Как высчитывается текущий уровень? Он записан где-то?
Можно просто в упор записать длинный скрипт
Код: Выделить всё
select
level as previous level,
IF( level=1, {условие для лвл 1, вывод ЛВЛ партнера},
IF (level=2, {условия для лвл 2},
IF (level=3), {Условие} ,
....
)
) as current_level
Или подсчитать уровень вверх:
Код: Выделить всё
update table
set level+1
where
IF( level=1, {условие для лвл 1, вывод ДА или НЕТ },
IF (level=2, {условия для лвл 2},
IF (level=3), {Условие} ,
....
)
)
UPD.
1. Проверка на второй уровень (на втором уровне более подробно будет)
1.1. Лично сам партнер купил >= 3 продукта
1.2. Проверка товарооборота в его структуре (со всех людей в его структуре) должно быть >= 350 продукции (в общем, не у каждого)
1.3. Должно быть под ним 5 человек которые на первом уровне (в его структуре)
1.1.1 И у этих 5 человек должно быть по 3 продукта (у каждого)
В таком случае, самый простой вариант - делаете 5 запросов на каждый уровень.
update partners a
inner join (select partner_id, count(id) as count_goods from invoice_items group by partner_id) b
on a.id=b.partner_id
inner join (select {на товарооборот}) c
on a.id=c.partner_id
set level=2
where
a.level=1