[ОТВЕТИТЬ]
Опции темы
15.12.2010 12:22  
akonev
нужно получить полное имя группы с путем вида
промышленные товары/инструменты/отвертки
для артикула

вопрос: у кого-нибудь есть подходящий запросик или функция чтобы получить эту штуку по smcard.idclass ?
 
15.12.2010 12:46  
akonev
Цитата:
Сообщение от Mtirt
там я смотрел в первую очередь. не оно. там две функции про классификатор:

одна возвращает имя последней в пути группы, то есть в моем примере "отвертки" вместо "промышленные товары/инструменты/отвертки"

вторая - приводит путь к цифровому виду, чтобы по нему было удобно сортировать
 
16.12.2010 09:20  
AirAir
select smcard.name,
svcardtreesplit.tree||'/'||svcardtreesplit.name1||'/'||svcardtreesplit.name2||'/'||svcardtreesplit.ITEM3 as grupa
From
supermag.svcardtreesplit,
supermag.smcard
Where
smcard.idclass = svcardtreesplit.ID

Order by
svcardtreesplit.ID,
smcard.name
Оно?
 
16.12.2010 09:21  
Mtirt
Это у тебя получилось 3 группы.
А если количество групп не ограничено? И заранее неизвестно, сколько их?
 
16.12.2010 09:59  
AirAir
Тогда вот так
Select
smcard.name,
svcardtreesplit.TREE,
RTRIM(svcardtreesplit.name1||'/'||svcardtreesplit.name2||'/'||svcardtreesplit.name3||'/'||svcardtreesplit.name4||'/'||svcardtreesplit.name5||'/'||svcardtreesplit.name6||'/'||svcardtreesplit.name7||'/'||svcardtreesplit.name8||'/'||svcardtreesplit.name9||'/'||svcardtreesplit.name10||'/','/')
From
supermag.svcardtreesplit,
supermag.smcard
Where
smcard.idclass = svcardtreesplit.ID
Order by
svcardtreesplit.ID,
smcard.name


Больше 10 групп вроде не может быть!
Можно конечно функцию на pl/sql написать которая будет возвращать либо строку для одного артикула, либо коллекцию и потом эту коллекцию перебирать, но в вопросе стоит именно получение запроса!
 
16.12.2010 10:00  
AirAir
Оно не оно?
 
16.12.2010 10:02  
vdm
Код:
SELECT  tree, sys_connect_by_path(name, '/') as tree_path 
from
( SELECT rownum rn,  ptree, tree, name
    FROM (SELECT id, SUBSTR (tree, 1, INSTR (tree, '.', -1, 2)) ptree, tree, name
            FROM supermag.sacardclass)
   START WITH id = :idclass
   CONNECT BY prior ptree = tree
)
WHERE rn=1
START WITH ptree is null
CONNECT BY ptree = prior tree
Только не нравится мне такое, подозреваю, что можно проще.
 
16.12.2010 10:02  
AirAir
Прошу прощения - в вопросе стоит запрос или функция.
 
16.12.2010 10:13  
AirAir
vdm! круто! Я раньше с такой конструкцией не сталкивался(деревья)-надо разобраться!
 
 


Опции темы



Часовой пояс GMT +3, время: 22:45.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.