здравствуйте. есть база со структурой: id, pid, text id- № п.п, pid- ссылается на id к которому относится, text- текст. 1 строка- 1-0-иванов надо сделать так чтобы выводил: первая линия (относятся к иванову) 2-1-петров 3-1-сидоров вторая линия (относится к сидорову) 4-3-кузнецов третья линия (относится к кузнецову) 5-4-смирнов соответственно все это выводится для одного и того же пользователя. как реализовать?
нифига не понятно ) что вывести? описание дерева, как ты его показал, называется adjacency list. непонятно только что именно ты от него хочешь.
в данном случае для пользователя иванов выводится три линии- как тут прямо: первая линия (относятся к иванову) 2-1-петров 3-1-сидоров вторая линия (относится к сидорову) 4-3-кузнецов третья линия (относится к кузнецову) 5-4-смирнов
иванов - корень всех? Код (Text): SELECT * FROM tree ORDER BY pid, id я не шучу ))) не нравится - сформулируй задачу нормально: что за "линии"? сколько их надо? что будет входящим параметром?
вот именно так должен выдавать скрипт, как в тексте. т.е.: в первой линии должны выдаваться потомки иванова (pid=1); во второй линии- потомки сидорова (ну или все, когда pid=3); в третьей линии- потомки кузнецова (pid=4); соответственно это все выдается для текста- иванов сам текст- перечисление этих линий- должен быть в скрипте
и в чем затык? Добавлено спустя 8 минут 54 секунды: я так и не добился ответа: есть ли входящий параметр (id, количество линий, …?) или надо буквально весь список х*йнуть. для Adjacency List нет способа вывести всех потомков заданного узла в один SQL-запрос — понадобится цикл перебора pid. но весь список вывести нет проблем: делаешь сортировку какую надо (pid + текст или id) и хватаешь одним селектом! я уже дал этот ответ. ты вообще программист? зареган здесь три года назад, может уже знаешь как из базы читать и выводить?
да я прогаю на php с 2007 года, я только этим и занимаюсь. просто сам до всего дохожу, не читая мануалов. а когда не получается как надо, после перебора сотни вариантов- начинаю спрашивать на форуме. вывод начинается для выбранного юзера (допустим, get=login). кароч я так понял что все равно вернулся к задаче трехлетней давности
В частном случае для AL может оказаться эффективнее прочитать все 10-20 записей, кешировать и фильтровать их средствами PHP. Через опу, но будет работать и не придется в теорию заныривать. А для больших редко изменяемых множеств я бы посоветовал Nested Sets.
каждый учится по-своему) например, по математике и английскому еле-еле оценка вытягивалась к тройке) учился на чужих скриптах, разбирал, что какая команда делает. потом начал подсматривать мануал чтобы правильно написать названия функций. не знаю ни CMS, ни фреймворков. сам все изобретаю с нуля) однако сделал пол-сотни проектов, которые работают по сей день..)
неа) не люблю ничего готовое. во всём) это главный принцип жизни. лучше изобрету велосипед- зато свой. и есть проекты, которые я создал сам от и до, в которых работают сейчас сотни пользователей. например- crm