Title: RE: SQL Brain Teaser Challenge

select *
from treenode
order by translate(description || 0, '0123456789abcdefghijklmnopqrstuvwxyz ', '0123456789')

Jerry Whittle
ACIFICS DBA
NCI Information Systems Inc.
[EMAIL PROTECTED]
618-622-4145

    -----Original Message-----
    From:   Orr, Steve [SMTP:[EMAIL PROTECTED]]

    Challenge: present SQL results hierarchically and sort the nodes. Use sort
    column without changing data. Here's the DDL/DML to start:

    create table treenode (
            id              number          not null
                            constraint pk_treenode primary key,
            parentid        number          not null,
            nodeorder       number          not null,
            description     varchar2(20)    null);

    insert into treenode values(1,0,0,'top folder');
    insert into treenode values(9,1,0,'1st subfolder');
    insert into treenode values(7,1,2,'3rd subfolder');
    insert into treenode values(2,1,1,'2nd subfolder');
    insert into treenode values(8,7,1,'folder 3 item 2');
    insert into treenode values(6,2,3,'folder 2 item 3');
    insert into treenode values(5,7,0,'folder 3 item 1');
    insert into treenode values(3,2,2,'folder 2 item 2');
    insert into treenode values(4,2,1,'folder 2 item 1');
    -----------------------------------------------------
    Here's the data presented hierachically without the desired sort:
    select * from treenode
    start with parentid=0 connect by prior id = parentid;
            ID   PARENTID  NODEORDER DESCRIPTION
    ---------- ---------- ---------- --------------------
             1          0          0 top folder
             9          1          0 1st subfolder
             7          1          2 3rd subfolder
             8          7          1 folder 3 item 2
             5          7          0 folder 3 item 1
             2          1          1 2nd subfolder
             6          2          3 folder 2 item 3
             3          2          2 folder 2 item 2
             4          2          1 folder 2 item 1
    -----------------------------------------------------
    Desired SQL statement results:
            ID   PARENTID  NODEORDER DESCRIPTION
    ---------- ---------- ---------- --------------------
             1          0          0 top folder
             9          1          0 1st subfolder
             2          1          1 2nd subfolder
             4          2          1 folder 2 item 1
             3          2          2 folder 2 item 2
             6          2          3 folder 2 item 3
             7          1          2 3rd subfolder
             5          7          0 folder 3 item 1
             8          7          1 folder 3 item 2
    -----------------------------------------------------

    Kudos to anyone who can figure out how to do this via SQL.

    Steve Orr
    Bozeman, Montana

Reply via email to