Mysql помощь - Форум успешных вебмастеров - GoFuckBiz.com - Страница 2
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB89.7026
BTC/USD68300.1979
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 26.01.2013, 14:57
Start Post: Mysql помощь 
  #11
Hector
hustle
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
Отправить сообщение для Hector с помощью Jabber
По умолчанию

Нужно выбрать коменты по ID и ответы на них (PID) и отсортировать по дате добавления главного сообщения.

Есть таблица.
Цитата:
id | message | pid | date
Но еще есть LIMIT 20 OFFSET 100 (постраничный вывод коментов).

Короче должно быть так:
1. Главное сообщение (дата 01.2013)
- комент (дата 12.2012)
- комент (дата 10.2012)
- комент (дата 05.2012)
- ...
2. Главное сообщение (дата 12.2012)
- комент (дата 01.2013)
- комент (дата 11.2012)


Ну и так далее. В таблице они идут все под своим id. Обратите внимание на даты. Выборка идет с LIMIT и OFFSET.

Пример коментов вот тут http://www.drive2.ru/users/mersbrabus/blog/246513/#post
Только мне нужно в обратном порядке (новые сверху).

Последний раз редактировалось Hector; 26.01.2013 в 15:04.
Hector вне форума  
Старый 26.01.2013, 17:32   #12
ulitka
Ебланнед
 
Регистрация: 08.01.2013
Сообщений: 53
Бабло: $35450
По умолчанию

Цитата:
Сообщение от flo0 Посмотреть сообщение
для хранения и управления деревьями люди придумали MPTT
хуйню они придумали
чтобы создать/удалить 1 запись надо пересчитать всё дерево
ulitka вне форума  
Старый 26.01.2013, 17:44   #13
flo0
Senior Member
 
Аватар для flo0
 
Регистрация: 24.04.2007
Адрес: Красноярск
Сообщений: 358
Бабло: $50640
По умолчанию

ну изобрети более эффективный метод для структур с неограниченной вложенностью. Многие тебе скажут спасибо

Пересчитывать границы можно одним запросом, это типа дешевле чем гонять рекурсивные запросы на выборку
__________________
PharmCash - Лучшие условия и профит в фарме. Hold-0, Refunds-0, Commission–50%, CPU+500. Google нас любит!
flo0 вне форума  
Старый 26.01.2013, 17:54   #14
Drunk Monk
Je suis moine ivre
 
Аватар для Drunk Monk
 
Регистрация: 03.03.2009
Сообщений: 15,268
Бабло: $797172957
По умолчанию

Так зачем на всю глубину за один запрос вынимать? Третий уровень аяксом подгружать лучше
Drunk Monk вне форума  
Старый 26.01.2013, 18:02   #15
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от flo0 Посмотреть сообщение
для хранения и управления деревьями люди придумали MPTT
+1

но зависит от ситуации, я чаще использую Materialized Path
http://www.opennet.ru/docs/RUS/hierarchical_data/

нужно одним запросом все вынимать - так самое правильное имхо, но для этого структура неправильная. Придется рекурсивно ходить по дереву, используя 100500 sql-запросов, убивая сервер.....но объектное кеширование спасет, да
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 26.01.2013, 18:10   #16
ulitka
Ебланнед
 
Регистрация: 08.01.2013
Сообщений: 53
Бабло: $35450
По умолчанию

Цитата:
Сообщение от flo0 Посмотреть сообщение
ну изобрети более эффективный метод для структур с неограниченной вложенностью. Многие тебе скажут спасибо
варианты есть, зависит от задачи. правильно спроектированная БД залог успеха
а пересчитать всё дерево или обыскать всё дерево последовательно это а не вариант
на малых объёмах только
ulitka вне форума  
Старый 26.01.2013, 18:25   #17
Hector
hustle
 
Аватар для Hector
 
Регистрация: 02.05.2008
Адрес: 3d world
Сообщений: 12,890
Бабло: $1717315
ТС -->
Отправить сообщение для Hector с помощью Jabber
автор темы ТС По умолчанию

Пацаны дерево строится. Мне нужно результаты в БАЗЕ подтянуть чтоб id было рядом с pid. Понимаете?
id
-pid
-pid

id
-pid


Иначе pagination сжирает ответы, так как сортируется по времени добавления. И он не подтягивает ответы на старые коменты. Если не понятна задача могу еще раз пояснить.
Hector вне форума  
Старый 26.01.2013, 18:59   #18
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от ulitka Посмотреть сообщение
варианты есть, зависит от задачи. правильно спроектированная БД залог успеха
а пересчитать всё дерево или обыскать всё дерево последовательно это а не вариант
на малых объёмах только
есть 3(4) популярных алгоритма (см выше) для хранения/обработки иерархических структур данных с помощью реляционных. Т.е. речь идет о трансформации иерархической модели данных в реляционную. Эти алгоритмы отличаются как раз вариантами/условиями их использования: одни лучше для чтения, другие для модификации и тд.

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

О каких вариантах говоришь ты - не понятно. Приведи пример?
Я к тому, что при отклонении от этих алгоритмов, скорее всего ты получишь проигрышь в оптимальности решения.
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 26.01.2013, 20:29   #19
ulitka
Ебланнед
 
Регистрация: 08.01.2013
Сообщений: 53
Бабло: $35450
По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
есть 3(4) популярных алгоритма (см выше) для хранения/обработки иерархических структур данных с помощью реляционных. Т.е. речь идет о трансформации иерархической модели данных в реляционную. Эти алгоритмы отличаются как раз вариантами/условиями их использования: одни лучше для чтения, другие для модификации и тд.

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

О каких вариантах говоришь ты - не понятно. Приведи пример?
Я к тому, что при отклонении от этих алгоритмов, скорее всего ты получишь проигрышь в оптимальности решения.
варианты от задачи зависят. иногда можно изначально так спроектировать БД, что упростишь себе жизнь сразу и навсегда
под конкретную задачу гектора я предложил идею выше.
я смотрел твою ссылку, чем тебе те варианты не нравятся? там есть получше, чем предложенный выше nested set, который годится под статику только или мелкие базы
под статику и у самого мускуля тоже есть оптимизатор
статика она такая, оптимизируемая
ещё тут читал интересный вариант
ulitka вне форума  
Старый 26.01.2013, 21:01   #20
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от ulitka Посмотреть сообщение
варианты от задачи зависят. иногда можно изначально так спроектировать БД, что упростишь себе жизнь сразу и навсегда
не согласен, т.к. задача недвусмусленна: обработка/хранение иерархической структуры данных. Цель - найти оптимальное решение. Условия - они не были озвучены до конца, не было сказано о характере запросов и их частотном распределении (чтение/редактирование(удаление)). Также не было предъвлено требований к производительности системы.
Одно лишь правильное проектирование БД не поможет в решении этой задачи обработки иерахических структур данных, т.к. проектирование БД - это часть реализации, не более того. Сам алгоритм стоит НАД реализацией.
Если ты говоришь об изменении самой постановки задачи и ее цели - это уже другой разговор.

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

Цитата:
Сообщение от ulitka Посмотреть сообщение
сразу и навсегда
ни разу такого не видел

Цитата:
Сообщение от ulitka Посмотреть сообщение
ещё тут читал интересный вариант
если то про первый алгоритм из статьи, то это Materialized path о котором я писал выше, его я чаще всего и использую у себя под свои задачи, но иногда nested set
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 26.01.2013, 21:15   #21
Boodda
Member
 
Регистрация: 14.11.2007
Сообщений: 35
Бабло: $7940
По умолчанию

да все решается гораздо проще, ставим Postgresql пишем тригер на внесение/апдейт коммента, у вышестоящего комента запоминаем ID подчинённых комментов в поле с типом ARRAY, и догоняем это все хранимой процедурой рекурсивного обсчёта при селекте.
Boodda вне форума