ФорумПрограммированиеPHP для идиотов → Комментарии деревцем

Комментарии деревцем

  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 23 мая 2008 г. 2:01

    собственно вобще не догоняю

    если коротко, то у нас есть id и parent_id комментариев
    я так понимаю, что необходимо вводить ещё одно поле — level

    вобщем, я не могу понять, по чему над сортировать, чтобы получить такое дерево

    or nested sets?
    где сортировать по боковым ключам
    все умрут, а я изумруд
  • mechanic

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 23 мая 2008 г. 2:27, спустя 26 минут 43 секунды

    id и pid достаточно, чтоб сформировать дерево
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 23 мая 2008 г. 2:30, спустя 2 минуты 21 секунду

    одним запросом к базе?
    все умрут, а я изумруд
  • mechanic

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 23 мая 2008 г. 3:19, спустя 49 минут 22 секунды

    таких уловий не было )
    можно поджойнить табличку саму с собой много раз, правда в случае с камментами это большая вложенность, 1 уровень - 1 джойн.. благо джойн по ключам нестрашен в плане тормозов

    select c1.id, c2.id, c3.id from cats c1 left join cats c2 on c2.pid = c1.id left join cats c3 on c3.pid = c2.id where c1.pid = 0;

    а что level тебе как то поможет сделать одним запросом?
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 23 мая 2008 г. 3:59, спустя 39 минут 41 секунду

    вобщем nested sets )
    все умрут, а я изумруд
  • ghost

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 23 мая 2008 г. 4:02, спустя 3 минуты 21 секунду

    http://phpclub.ru/detail/article/db_tree
    вот эта статейка мне в своё время оч помогла
  • Patrick

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 23 мая 2008 г. 4:22, спустя 20 минут 9 секунд

    md5, давай подойдём к теме по другому, зачем тебе дерево? критично ли тебе время вставки? время выборки?
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 23 мая 2008 г. 4:26, спустя 3 минуты 11 секунд

    время вставки не критично, больше критично время выборки, т.к. дерево может быть огромным и выбирать его, делая несколько запросов, это по-моему просто ужас
    а используя нестед-сетс мы сразу получим правильную сортировку + уровень отступа….
    все умрут, а я изумруд
  • Patrick

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 23 мая 2008 г. 4:36, спустя 10 минут 37 секунд

    ссори… пропустил тему топика(((
    1. Для комментов лучше всего подходит материализованные пути:
    1.1. выборка 1 запрос
    1.2. вычисления уровня вложенности в пределах мат погрешности.
    1.3. вставка 3 - запроса, очень легких….
    1.4. наскока я знаю LJ использует именно этот механим….

    2. NS очень туго происходит вставка на большом девере…
  • md5

    Сообщения: 11951 Репутация: N Группа: в ухо

    Spritz 23 мая 2008 г. 4:37, спустя 1 минуту 1 секунду

    Patrick, спасибо
    насчет тугой вставки тоже читал где-то
    все умрут, а я изумруд
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 1 июня 2008 г. 0:00, спустя 8 дней 19 часов 22 минуты

    подходит материализованные пути

    а ссылку можно?

    я nested sets юзаю для своего сайта, не для кометров а для структуры, не могу сказать чтоб сильно тормозно было хотя у меня не очень большая структура. В общем писать класс для работы это страшный геморой надо брать

    http://php.russofile.ru/ru/authors/sql/nestedsets01/
    http://dev.e-taller.net/dbtree/
    http://www.anter.com.ua/myXTree/

    а там у каждого свои недостатки)
  • ghost

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 1 июня 2008 г. 5:22, спустя 5 часов 22 минуты 24 секунды

    свой ща пишу походу.. напишу - выложу.
    да, геморой :)
  • Patrick

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 1 июня 2008 г. 23:31, спустя 18 часов 8 минут 54 секунды

  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 2 июня 2008 г. 1:41, спустя 2 часа 10 минут 8 секунд

    Patrick, пасибо, но я думал может какой-то класс для работы есть хороший…
  • Patrick

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 2 июня 2008 г. 11:29, спустя 9 часов 48 минут 19 секунд

    CTAPbIu_MABP, зачем там класс, и так всё придельно просто….

Пожалуйста, авторизуйтесь, чтобы написать комментарий!