Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка при выводе дерева сообщений / 11 сообщений из 11, страница 1 из 1
15.08.2013, 16:02:05
    #38367760
grecha10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
Здравствуйте!

Есть таблица для хранения отзывов на товары. Продавец товара на каждый отзыв может написать комментарий.

Задача: вывести данные из таблицы так, что бы самые последние отзывы были в начале. Разумеется, комментарий продавца должен быть под комментируемым отзывом.

Не имеющие значения для текущей задачи поля (типа idProduct) не указываю.
Поле Описаниеid Уникальный номерparentid Номер родительского разделаlev Уровень сообщения: 1- отзыв; 2- комментарийpath Путь к строке

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
--
-- Структура таблицы `reviews`
--

CREATE TABLE `reviews` (
  `id` mediumint(9) NOT NULL auto_increment,
  `parentid` mediumint(9) default NULL,
  `path` varchar(20) NOT NULL,
  `lev` tinyint(4) NOT NULL,
   PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=52 ;



Пример данных в таблице
idparentidpathlev1NULL104511/0000004514411/0000004414311/0000004314111/0000004114211/0000004214011/00000040146401/00000040/00000046247451/00000045/00000047248411/00000041/0000004825011/00000050151501/00000050/000000512

Для вывода дерева использую запрос:

Код: sql
1.
SELECT r.* FROM reviews r WHERE r.id<>'1' ORDER BY r.path



Получается прекрасно, но новые отзывы оказываются внизу выдачи. А мне нужно чтобы они были вверху. Добавляю DESC:
Код: sql
1.
SELECT r.* FROM reviews r WHERE r.id<>'1' ORDER BY r.path DESC



И получается ожидаемая и предсказуемая фигня - порядок вывода отзывов правильный но комментарии в списке выше отзывов.
Как получить из этой таблицы/данных такой порядок вывода:

id
50
51
45
47
44
43
42
41
48
40
40
...
Рейтинг: 0 / 0
15.08.2013, 16:14:22
    #38367792
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
grecha10Продавец товара на каждый отзыв может написать комментарий.Может ли продавец написать более одного комментария на каждый отзыв?
...
Рейтинг: 0 / 0
15.08.2013, 16:19:29
    #38367804
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
Код: sql
1.
2.
3.
4.
5.
6.
order by 
if(
  lvl=2,
  replace(path,concat('/',right(100000000+id,8)),''),
  path
), id

Но без индекса :(
...
Рейтинг: 0 / 0
15.08.2013, 16:20:48
    #38367806
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
то есть if(..)desc,id
...
Рейтинг: 0 / 0
15.08.2013, 16:27:10
    #38367821
grecha10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
miksoft,
да может.
...
Рейтинг: 0 / 0
15.08.2013, 16:28:57
    #38367825
grecha10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
Cygapb-007,
круто, работает!
А если path сделать индексным полем, тоже не будет использоваться?
Есть ли другие варианты что бы ускорить этот запрос?
...
Рейтинг: 0 / 0
15.08.2013, 16:31:13
    #38367832
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
grecha10miksoft,
да может.поправочка
Код: sql
1.
order by if(lvl=1,path,replace(path,concat('/',right(100000000+id,8)),''))desc, id
...
Рейтинг: 0 / 0
15.08.2013, 16:35:25
    #38367843
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
grecha10А если path сделать индексным полем, тоже не будет использоваться?не будет
Есть ли другие варианты что бы ускорить этот запрос?можно попробовать сделать индекс таким же, как условие сортировки - увеличит размер базы, но сортировать каждый раз уже не будет. Наверное
...
Рейтинг: 0 / 0
15.08.2013, 17:01:27
    #38367891
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
Cygapb-007можно попробовать сделать индекс таким же, как условие сортировкинету в мускле функциональных индексов
придётся доп.поле добавлять
...
Рейтинг: 0 / 0
16.08.2013, 17:37:09
    #38369253
grecha10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
Cygapb-007,
большое спасибо!!
...
Рейтинг: 0 / 0
16.08.2013, 17:38:07
    #38369255
grecha10
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка при выводе дерева сообщений
tanglir,
я не очень хорошо понимаю как это сделать. Можете помочь примером или решением?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка при выводе дерева сообщений / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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