15.12.2010 12:22
akonev
 
нужно получить полное имя группы с путем вида
промышленные товары/инструменты/отвертки
для артикула

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

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

вторая - приводит путь к цифровому виду, чтобы по нему было удобно сортировать
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: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, время: 14:00.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.