Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выбор по древовидной структуре 
:(
    Опции темы
17dufa
Дата 16.2.2010, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 2.3.2006

Репутация: 1
Всего: 5



Есть таблица T1:
T1_ID int - PK
T1_Parent int
Value char(10)

Есть таблица T2:
T2_ID int - PK
T1_ID int - FK

через T1_Parent записи таблицы T1 организованы в дерево.

Теперь задача: есть запись в T2 (то есть есть ее T2_ID) и есть некая символьная маска. Задача - как узнать, есть ли среди записей T1 такая, что:
1. Value удовлетворяет маске
2. T1_ID из имеющейся записи в T2 ссылается либо на данную запись T2, либо на одну из дочерних записей (дочерних в смысле того дерева, в которое организована T1)

например:
Т1:
1 0 "oooo"
2 1 "aaa"

T2:
1 2

теперь предположим, что рассматривается запись T2 = {1,2} и задана маска "o%". Тогда запись T1 = {1,0,"oooo"} - искомая.



PM MAIL   Вверх
Gluttton
Дата 16.2.2010, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



В MS SQL Server и Firebird (с другими СУБД просто не сталкивался) для перебора древовидных структур можно использовать рекурсивные запросы. Для осуществления выбора по маске можно рекурсивный запрос реализовать в виде хранимой процедуры, а сам выбор по маске осуществлять тривиальным select'ом к этой хранимой процедуре.
Пример реализации хранимых процедур для выборки, вставки и удаления при древовидной организации хранения данных.


--------------------
Слава Україні!
PM MAIL   Вверх
Zloxa
Дата 17.2.2010, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Gluttton @  16.2.2010,  23:32 Найти цитируемый пост)
(с другими СУБД просто не сталкивался

рекусрсивные запросы реализованы так же в db2, postgree, оракле с 11й версии(до 11й  в оракле реализованы иерархические запросы)
Цитата(Gluttton @  16.2.2010,  23:32 Найти цитируемый пост)
можно рекурсивный запрос реализовать в виде хранимой процедуры

нипонял зачем. Дерево формируешь в кекурсивном with а в селекте - отбор по маске....


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Gluttton
Дата 17.2.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Цитата(Zloxa @  17.2.2010,  14:55 Найти цитируемый пост)
нипонял зачем.

Ну типа, что бы запрос выглядел ну-у-у о-о-очень просто:
Код

select * 
from sp
    where ca="mask"

Ну это так smile , типа инкапсуляции smile ...


--------------------
Слава Україні!
PM MAIL   Вверх
17dufa
Дата 17.2.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 2.3.2006

Репутация: 1
Всего: 5



мдась. было у мя подозрение, что это все не просто. 
PM MAIL   Вверх
Zloxa
Дата 17.2.2010, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



а помому все просто  smile 

Наверное мы говорим о разных платформах ;)


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Gluttton
Дата 17.2.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



17dufa, вот тут мы со Zloxa упражнялись в рекурсии...
Вы начните, а там, когда вопросы будут по конкретнее думаю поможем smile ...
 


--------------------
Слава Україні!
PM MAIL   Вверх
17dufa
Дата 18.2.2010, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 2.3.2006

Репутация: 1
Всего: 5



как нить на досуге для общего развития поупражняюсь. 
наш Oracle RDB к сожалению слова recursive не кушает
*тока не надо мне грить, что Oracle RDB - это зло, я это и сам знаю smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1090 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.