powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод древовидных комментариев в простом виде
18 сообщений из 18, страница 1 из 1
Вывод древовидных комментариев в простом виде
    #38522927
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте,

у меня есть такая вот задача, но которую хотелось бы упростить в некотором роде.

есть таблица

Код: plaintext
1.
2.
3.
4.
5.
id parent login   comment
1  0       user1  как погода?
2  1       user2  погода норм.
3  0       user4  всем привет
4  1       user3  говорят зима теплая
5  2       user1  хорошая?

Задача вывести комментарии древовидно, это можно реализовать на стороне языка программирования в моем случае на java. Кому интересно Вывести категории в Java

Но дело в том, что я хочу вывести комментарии в соответствии с id и parent в правильном порядке но абсолютно не важна вложенность.
То есть какая бы вложенность не была 3, 8, 50 комментарии всегда будут выводиться в таком виде:

user1 как погода?
-user2 погода норм.
-user1 хорошая?
-user3 говорят зима теплая
user4 всем привет


Вопрос, можно ли SQL-запросом вывести записи в нужной последовательности? у меня не получилось подобное придумать.
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522964
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhazhahв правильном порядкеТак озвучьте критерий "правильности" - из пример непонятно, каков он.
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522967
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

в моем случае правильным будет пример, если вы посмотрите на мой пост то увидите его там)
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522970
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно, только вот если комментариев будет очень много,
возникнут проблемы,
а как вы собираетесь отображать на странице их?
наверняка какойто пагинатор должен быть,
и что делать если размер ветки будет больше размера страницы?
или листать не по количеству строк собираетесь?
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522976
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bochkov,

в том чтобы вывести не вижу проблем, подгружать буду по если пользователь захочет увидеть все комменты.


Все таки как не крути чтобы вывести все в нужной последовательности, вложенность придется учитывать придется делать на клиенте
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522980
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirиз пример непонятнокакое из этих слов надо объяснить?
вот, например, у вас 2 поста с парент=0, почему пост с ид=1 в начале, а с ид=3 - ближе к концу выбоки?
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522981
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, еслиZhazhahЗадача вывести комментарии древовидно, то мускль в принципе не умеет выводить деревья... формулируйте правильно, это будет уже половина решения :)
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522984
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя вообще-то мой ХШ тут говорит, что это очередной велосипед на тему древовидного форума. Тогда вместо child-parent можно перейти на (или прикрутить к текущей структуре) materialized path, и всё решится одним order by.
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522988
Zhazhah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

вы посмотрите пожалуйта внимательнее, почему так выводится это же элементарно понять по примру
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522994
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhazhahэто же элементарно понять по примруответьте на вопрос:
tanglirвот, например, у вас 2 поста с парент=0, почему пост с ид=1 в начале, а с ид=3 - ближе к концу выбоки?
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522995
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исходные данные
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DROP TABLE IF EXISTS comments;
CREATE TABLE comments (
  id  int(11) NOT NULL AUTO_INCREMENT,
  parent int(11) NOT NULL,
  login varchar(15) NOT NULL,
  note varchar(255) NOT NULL,
  PRIMARY KEY(id,parent),
  KEY(parent)
  );
INSERT INTO comments VALUES 
(1,0,'user1','как погода?'),
(2,1,'user2','погода норм.'),
(3,0,'user4','всем привет'),
(4,1,'user3','говорят зима теплая'),
(5,2,'user1','хорошая?');


запрс
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT IF(parent,'-',''),c.parent,c.login,note
FROM(
SELECT @index:=INSTR(@a,',') as coma_index,
@id:=SUBSTRING_INDEX(@a, ',', 1)  as id,
@a:=SUBSTRING(@a,IF(@index,@index+1,0)),
@a:=CONCAT_WS(IF(LENGTH(@a)>0,',',''),(SELECT group_concat(id ORDER BY id) FROM comments c WHERE c.parent=@id),@a) as array,
@sort:=@sort+1 AS sort
FROM comments c,(SELECT@a:= GROUP_CONCAT(id),@sort:=0 FROM comments WHERE parent =0) init
WHERE LENGTH(@a)>0
) AS hi 
JOIN comments c ON hi.id=c.id
ORDER BY sort


как вы его пагинатить будете,
та еще задачка
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38522997
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirZhazhahэто же элементарно понять по примруответьте на вопрос:
tanglirвот, например, у вас 2 поста с парент=0, почему пост с ид=1 в начале, а с ид=3 - ближе к концу выбоки?
из -за рекурсии такая сортировка получается
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38523001
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bochkov, та не, в примере 2 "ветки" - "А" (юзеры 1,2; ид 1,2,5) и "Б" (юзеры 3,4; ид 3,4). По акому принципу сорируются сообщения в ветке, ясно - от корня(парент=0) к потомку и дальше по цепочке. Я хочу понять, по какому принципу сортируются сами ветки.
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38523004
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я предположил ,что руты сортируются по id, parent у них 0,
сперва их извлек, потом каждого рута раскрутил, деток при извлечении тоже сортировал по id
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38523006
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bochkov, это очевидно, но если ТС испытывает сложности уже на этапе формулировки задачи, то что же будет дальше? :)
bochkovкак вы его пагинатить будете,
та еще задачкаАга, потому-то я за mat.path, там это всё ж таки попроще будет.
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38523008
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть у кого нить идеи по поводу "пагинации",
как вообще люди такие деревья листают,
где то сталкивался в инете, но правил игры, так и не понял,
охота допилить запрос пока делать нечего
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38523024
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл про сортировку рутов,
добавил возможность листать рутов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT IF(parent,'-',''),c.parent,c.login,note
FROM(
SELECT @index:=INSTR(@a,',') as coma_index,
@id:=SUBSTRING_INDEX(@a, ',', 1)  as id,
@a:=SUBSTRING(@a,IF(@index,@index+1,0)),
@a:=CONCAT_WS(IF(LENGTH(@a)>0,',',''),(SELECT group_concat(id ORDER BY id) FROM comments c WHERE c.parent=@id),@a) as array,
@sort:=@sort+1 AS sort
FROM comments c,(SELECT@a:= GROUP_CONCAT(id ORDER BY id),@sort:=0 FROM 
(SELECT id FROM comments WHERE parent =0 ORDER BY id LIMIT 0,1) AS limited_roots #лимитить - листать рутов
                  ) as init
WHERE LENGTH(@a)>0
) AS hi 
JOIN comments c ON hi.id=c.id
ORDER BY sort
...
Рейтинг: 0 / 0
Вывод древовидных комментариев в простом виде
    #38523029
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bochkovесть у кого нить идеи по поводу "пагинации",
как вообще люди такие деревья листают,Большинство(*) древовидных форумов, которые я видел, были предельно убоги: есть список тем (все с парент=0), по клику на тему открывается первый пост и его чайлды, по клику на чайлд открывается он и его чайлды (+есть ссылка на предка, хотя может и не быть)... и всё! какая нафиг пагинация, если потомков всё равно 2-3-5, ну максимум 10.
Правда, читать всё это дико неудобно... может, и есть в этом тайный смысл, но я его не понял :)
*Соврал. Не большинство, а все. Удобных не припомню вообще.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод древовидных комментариев в простом виде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]