Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2009, 03:24   #1
Neurotechnic
Новичок
Джуниор
 
Регистрация: 19.05.2008
Сообщений: 2
По умолчанию Помогите составить запрос или перепроектировать БД

Есть база данных такого вида:

CREATE TABLE InfoTree (
ID AUTOINCLARGEINT
ParentID LARGEINT DEFAULT -1 NOT NULL,
Name WIDESTRING(1023)
);

CREATE TABLE Tags (
TagID AUTOINCLARGEINT,
TagName WIDESTRING(1023)
);

CREATE TABLE TagDependancy (
TagID LARGEINT,
ID LARGEINT
);

Первая таблица содержит древовидную структуру данных (полей там побольше конечно, но в данном случае это не важно).
Вторая таблица содержит список возможных тэгов и их уникальных идентификаторов.
И третяя таблица содержит связи между записями главной таблицы и тэгами.

Проект написан на Delphi, используется база данных Absolute Database.
Для отображения используется компонент DevExpress TcxDBTreeList. Он автоматом отрисовывает дерево по таблице InfoTree на основе ID и ParentID.

Мне дали этот проект доработать, необходимо добавить еще один TcxDBTreeList который будет показывать дерево тегов.
Это дерево всегда двухуровневое. На первом уровне у него имена тэгов (Tags.TagName), на втором уровне имена элементов основной таблицы (InfoTree.Name) соответсвующие этому тэгу.
Т.е. нужно построить таблицу c тремя полями:
ID - уникальный идентификатор
ParentID - родитель, для записей первого уровня (тэгов), он будет равен -1
Name - имя элемента, для первого уровня Tags.TagName, для второго соответсвенно InfoTree.Name

Собственно вопрос, как это оптимально сделать? Если надо структуру всех таблиц можно переделать. В планах также переход на SQLite. В базах данных и SQL я новичок, так что сильно не пинайте.
Единственное, на что у меня хватит знаний сейчас это строить это таблицу вручную, бегая по таблицам в цикле, но думаю это не самый лучший вариант. Жду советов!
Neurotechnic вне форума Ответить с цитированием
Старый 27.07.2009, 10:51   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ничего не надо переделывать
просто в первый запрос, которые тебе строит дерево, добавь внешнее соединение с таблицей TagDependancy (потому что не у каждого элемента есть тэг в общем случае) и прямое соединение с таблицей Tags, чтобы выцепить само название тэга
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите создать сложный запрос (или как писать код для столбца запроса) kukuanna Microsoft Office Access 0 24.07.2009 14:10
составить запрос с учетом времени sinj SQL, базы данных 9 09.06.2009 13:41
Необходимо составить запрос span4 SQL, базы данных 17 05.04.2009 11:43
Как правельно составить запрос!! Areostar SQL, базы данных 3 16.02.2008 19:49
составить запрос к таблицам T1 и T2 MonteCarlos SQL, базы данных 13 03.02.2008 14:05