|
|
|
| У меня в реф-системе известное количество уровней. Поэтому, и потому что я пока не придумал, как иначе - я держу табличку:
login preref1 preref2
и так далее. Логин - это пользователь, пререф1 - под кем он зарегистрировался, пререф2 - тот, под кем зарегистрировался пререф1... все замечательно, но теперь мне поставили задачу - при удалении, поднимать всех низлежащих на уровень ввверх. то есть, если:
login preref1 preref2
aaa
bbb aaa
ccc bbb aaa
то после удаления пользователя bbb, должно получится так:
login preref1 preref2
aaa
ccc aaa
Так вот... как это оптимально можно сделать? а то корплю над кодом - как об стенку головой...
А на будущее, для само-развития - как все-таки сделать реф систему? Полагаю, можно сделать login preref , и все. И как-то циклом бегать по ним, ориентируясь на цифирку "количество уровней".... | |
|
|
|
|
|
|
|
для: Shorr Kan
(04.02.2005 в 14:39)
| | Для этого вводят два поля
login parent_login
aaa
bbb aaa
ccc bbb
ddd bbb
eee ddd
|
Тогда для удаления реферера ddd следует сначала удалить все записи у кого parent_login = ddd, а потом запись для которой login = ddd. Для удаления aaa следует рекурсивно спустится по дереву и удалить всех рефералов. В нормальных базах данных это можно сделать в одину строку, в MySQL - придётся рекурсию организовывать. Схожая проблема обуждается в теме по ссылке.
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=701 | |
|
|
|
|
|
|
|
для: cheops
(04.02.2005 в 21:44)
| | Прочитал, понятно. Но это, как я уточнял, на будущее. А так у меня сейчас несколько столбцов, и каждому логину приписаны люди, под которыми он зарегистрирован (все уровни). Тут есть большой плюс - не надо каждый раз искать по всей таблице, достаточно WHERE login=... Но дело не в этом. Как мне сейчас поднимать всех на уровень вверх при удалении кого-либо? | |
|
|
|