Title: RE: SQL Brain Teaser Challenge

Steve,

I'm busted! You caught me cheating. Still you must admit it was an interesting use of TRANSLATE given the data in the DESCRIPTION field.

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

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

    Well it worked but it doesn't follow the rules. The description can change
    so it should not be sorted on. Consider this:

    update treenode set description='2nd item, 3rd folder' where id=8;

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

            ID   PARENTID  NODEORDER DESCRIPTION
    ---------- ---------- ---------- --------------------
             1          0          0 top folder
             9          1          0 1st subfolder
             8          7          1 2nd item, 3rd folder
             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

    9 rows selected.
    -----Original Message-----
    From: Whittle Jerome Contr NCI [mailto:[EMAIL PROTECTED]]

    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