Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.08;
Скачать: CL | DM;

Вниз

Запрос построить   Найти похожие ветки 

 
rar ©   (2007-01-18 17:53) [0]

Есть таблица РАЗДЕЛЫ иерархической структуры

ID_Tom
Tom
ID_Parent

для коневого узла ID_Parent=0.

Есть подчиненная таблица ХАРАКТЕРИСТИКИ

ID_Character
ID_Tom
NomNumber

необходимо в таблице РАЗДЕЛЫ отобрать данные по условию:

ID_Parent=0;
NomNumber Like"6%"

т.е. выбрать корневые узлы (ID_Parent=0;) которые являются родителем для NomNumber Like"6%".
Можно ли это выбрать одним запросом.
Уф вроде все :-)


 
Desdechado ©   (2007-01-18 18:20) [1]

СУБД какая?


 
Johnmen ©   (2007-01-18 18:53) [2]

Так тривиальное соединение
SELECT * FROM РАЗДЕЛЫ, ХАРАКТЕРИСТИКИ
WHERE
(РАЗДЕЛЫ.ID_Tom=ХАРАКТЕРИСТИКИ.ID_Tom) AND
(РАЗДЕЛЫ.ID_Parent=0) AND
(ХАРАКТЕРИСТИКИ.NomNumber Like"6%")


 
Комбинатор   (2007-01-18 19:25) [3]

SELECT DISTINCT(РАЗДЕЛЫ.ID_Tom) FROM РАЗДЕЛЫ, ХАРАКТЕРИСТИКИ
WHERE
(РАЗДЕЛЫ.ID_Parent=0) AND
(РАЗДЕЛЫ.ID_Tom=ХАРАКТЕРИСТИКИ.ID_Tom) AND
(ХАРАКТЕРИСТИКИ.NomNumber Like"6%")


 
ANB ©   (2007-01-18 19:40) [4]


> SELECT * FROM РАЗДЕЛЫ, ХАРАКТЕРИСТИКИ
> WHERE
> (РАЗДЕЛЫ.ID_Tom=ХАРАКТЕРИСТИКИ.ID_Tom) AND
> (РАЗДЕЛЫ.ID_Parent=0) AND
> (ХАРАКТЕРИСТИКИ.NomNumber Like"6%")

Дубли


> SELECT DISTINCT(РАЗДЕЛЫ.ID_Tom) FROM РАЗДЕЛЫ, ХАРАКТЕРИСТИКИ
> WHERE
> (РАЗДЕЛЫ.ID_Parent=0) AND
> (РАЗДЕЛЫ.ID_Tom=ХАРАКТЕРИСТИКИ.ID_Tom) AND
> (ХАРАКТЕРИСТИКИ.NomNumber Like"6%")

disticnt спасает, но можно и проще

Однако никак не учитывается, что корень может быть не непосредственным хозяином характеристики. Если это нужно учитывать - то надо раскручивать дерево.

SELECT * FROM РАЗДЕЛЫ
WHERE
РАЗДЕЛЫ.ID_Parent=0 AND
РАЗДЕЛЫ.ID_Tom in
(
select ХАРАКТЕРИСТИКИ.ID_Tom from ХАРАКТЕРИСТИКИ
where ХАРАКТЕРИСТИКИ.NomNumber Like"6%"
)
это без раскрутки дерева.

С раскруткой можно сделать только на оракле.


 
Комбинатор   (2007-01-18 19:41) [5]


> С раскруткой можно сделать только на оракле.

Sybase))))))


 
ANB ©   (2007-01-18 20:01) [6]

create table Toms
(
ID_Tom integer,
Tom varchar2(200),
ID_Parent integer
)

create table Characters
(
ID_Character integer,
ID_Tom       integer,
NomNumber    varchar2(200)
)

Запрос с учетом дерева (Оракл) :

select *
 from Toms Tm
where Tm.Id_parent = 0
  and exists (select     1
                    from Toms, characters
                   where characters.Id_tom = Toms.Id_tom
                     and Nomnumber like "6%"
              start with Toms.Id_tom = Tm.Id_tom
              connect by Toms.Id_parent = prior Toms.Id_tom)


 
ANB ©   (2007-01-18 20:02) [7]


> Sybase))))))

В теме СУБД не указана. Значит пусть ставит оракл и наслаждается :)


 
rar ©   (2007-01-18 21:25) [8]

СУБД Oracle

Мне надо было получить именно корень

Завтра попробую рекомендации

> ANB ©   (18.01.07 20:01) [6]

Может действительно получу корни

Большое всем спасибо


 
ANB ©   (2007-01-19 10:28) [9]


> Мне надо было получить именно корень

Мой последный запрос тащит именно корни, если в нем самом или в любой его ветке есть характеристика, начинающаяся с 6.


 
rar ©   (2007-01-19 18:05) [10]

К сожалению запрос оказался путым :-((


> ANB ©   (18.01.07 20:01) [6]


На его основе написал вот это:

SELECT * from Toms Tm
WHERE Tm.id_Tom IN(SELECT DISTINCT Tm.Id_parent
 from Toms, characters
                  where characters.Id_tom = Toms.Id_tom
                    and Nomnumber like "6%")
start with Tm.Id_parent=0
connect by Tm.Id_tom= PRIOR Tm.Id_parent

он и выдал то что нужно, надеюсь :-), правда работает не быстро, но похоже с деревьями всегда так

Всем Большое  Спасибо



Страницы: 1 вся ветка

Текущий архив: 2007.04.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
3-1169051639
Kerk
2007-01-17 19:33
2007.04.08
[FireBird] Вставка строк в таблицу


15-1173787595
Ламот
2007-03-13 15:06
2007.04.08
Проблемы с печатью из 1C + Win2003 + Терминал сервер


5-1150975100
Isaak
2006-06-22 15:18
2007.04.08
TObj = class(TGraphicControl)


2-1174118231
Boker
2007-03-17 10:57
2007.04.08
TImage - невозможна загрузка ...??


15-1174075693
SkySpeed
2007-03-16 23:08
2007.04.08
MathCad - трабл при запуске................. как решить проблему?