Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Выборка из MySQL?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
Nicknamed



Зарегистрирован: 27.09.2004
Сообщения: 13
Откуда: Россия

СообщениеДобавлено: Вс Дек 05 2004 00:51    Заголовок сообщения: Выборка из MySQL? Ответить с цитатой

Помогите, плз, а то я задолбался уже!
Поясню ситуацию вкратце.
Есть некая древовидная структура (ну например, форум) вида
"сообщение 1"
|
--- "потомок 1 сообщения 1"
--- "потомок 1 потомка 1"

"сообщение 2"
И так далее.
Вся эта хрень хранится в базе. Нужно сделать выборку так, чтобы сверху оказались самые свежие темы и при этом не нарушилась древовидная структура.
Я попробовал след. таблицу:
ID| parent | date
---|---------|-----
1 | 0 | 1
2 | 1 | 2
3 | 1 | 5
4 | 0 | 3
5 | 4 | 4
6 | 5 | 6
Где parent=0 означает, что сообщение не имеет предка, а другой номер указывает на ID предка. Цифры в дате означают свежесть - чем больше, тем свежее.
Подскажите, как это можно обработать на php. Обычный SELECT не помогает, группировки не подходят, вроде бы как надо писать рекурсию, но не знаю, как конкретно.
Нужна помощь!
_________________
Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Moby



Зарегистрирован: 19.11.2004
Сообщения: 268

СообщениеДобавлено: Пн Дек 06 2004 13:53    Заголовок сообщения: рекурсия спасёт мир... Ответить с цитатой

верно понимаешь. ну точнее, можа есть и другие более красивые решения этой задачи, просто я не копал так глубоко и сигда использовал рекурсию в подобного рода задач.
итак, что имеем:
- имеем стандартную базу Forum: ID, ParentID, и Date.

делаем следующую рекурсивную функцию:
Код:

function  makedir($ParentID, $sep) {
  $sql = 'select ID FROM Forum WHERE ParentID='.$ParentID.' ORDER BY Date DESC';
  $query = mysql_fetch_array($sql);
  while ($row = mysql_fetch_array($query)) {
    echo $sep.' '.$row['ID'];
    makedir($row['ID'], $sep.='-');
  }
}

вот те простейший пример рекурсивного построения дерева. функция строит один уровень дерева и вызывает себя для построения входящего уровня. вызывать такую ф-ию изначально надо с параметрами: ParentID=0 $sep=''; что такое $sep - надеюсь понятно?
_________________
Профи - это оборзевший ламмер
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...