| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Как скопировать дерево из одной таблицы в другую? |
| Автор: x404 26.11.2005, 00:33 |
| Доброго времени суток! Помогите решить такую проблему. Имеется 2 таблицы, в которых надо хранить древовидную структуру. Первая - ТИПОВЫЕ СТАТЬИ, а вторая - РЕАЛЬНЫЕ СТАТЬИ. ---Структура таблиц:---- Article_t (ТИПОВЫЕ СТАТЬИ): Id_Art_t, ParentID_t, IsFolder_t, Name_t Article (РЕАЛЬНЫЕ СТАТЬИ): Id_Art, ParentID, IsFolder, Name. Поле ParentID_t указывает на родительский ID, т.е. на родителя. Поле IsFolder_t определяет чем является данная запись - папкой, подпапкой или статьей. Глубина подпапок не ограничена(тут у меня и возникла проблема. Name_t - имя типовой папки/подпапки/статьи. Проблема в следующем: как мне из таблицы типовых статей (Article_t) скопировать структуру дерева в таблицу с реальными статьями(Article)? Это надо для того, чтобы, когда заводилось новое предприятие, статьи сразу же заносисись из справочника(Article_t) в реальную таблицу(Article). БД - Sybase 6. Язык программирования - Delphi 6. Используется ADO. |
| Автор: Cashey 26.11.2005, 14:58 |
| В исходной таблице у тебя должно быть 4 поля ID записи, ID записи родителя (т.е. записи уровнем выше), номер вложенности, и поле хранящие ID записи первого уровня от которого и растет ветвь дерева. Тогда берешь записи, у которых номер вложенности меньше, и один ID первичной записи и все, если я правильно понял задачу. |
| Автор: LSD 26.11.2005, 16:24 | ||||||
| Не уверен что это сработает в Sybase, но попробуй так: Вначале выполняешь:
затем
до тех пор пока количество вставленных строк не станет 0. Или отключить на время FOREIGN KEY, выполнить
а затем снова его включить. |
| Автор: x404 27.11.2005, 01:02 |
| Я уже чуток все по другому за сегодня сделал: отказался я от справочника, но добавил еще одно поле - "ЗАМОРОЗКА". т.е. у меня для всех предприятий теперь будут присутствовать одни и теже статьи, а вот за работоспособность каждой конкретной статьи будет отвечать эта самая "заморозка",т.е. если статья заморожена, то ее для данного предприятия и нет. Спасибо тем кто откликнулся. Задачка не из простых все таки. А вот насчет номера вложенности в случае копирования статьи это, как мне кажется, абсолютно верно!Это и есть та самая зацепка, которой мне не хватало!! |