Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.tools -> Re: Newbie SQL question

Re: Newbie SQL question

From: Ed Prochak <prochak_at_my-deja.com>
Date: 1999/10/07
Message-ID: <7tj19h$9s3$1@nnrp1.deja.com>#1/1

In article <7tik47$vjq$1_at_nnrp1.deja.com>,   steve_billingsley_at_my-deja.com wrote:
> Thank you to anyone who can find an answer to this .....
>
> I am hitting an Oracle 7 db using odbc and visual basic in an active
> server page running off of an IIS web server
>
> the problem I am having is that I have a table that has these fields
> user_id, name, supervisor
>
> any user can be defined as a supervisor using their user_id (with no
> checking to make sure two people aren't each others supervisor
> creating a never ending loop)
>
> what I am trying to do is select a user_id and from that
> determine everyone they are a supervisor for. With these names I want
 to
> list anyone they are supervisors for, etc, etc, until I get a distinct
> list of names that the top supervisor is supervisor for :)
>
> The method I have tried looks like this
>
> select distinct user_id, name from emp
> where supervisor=user
> or supervisor in (select user_id from emp where supervisor=user)
> order by name
>
> This gets me down two levels. I could keep adding "or supervisor in"
> statements but then I am only guessing on how many levels of
 management
> there are.
>
> Any hints on how to do such a thing?
>
> Thanks,
> Steve

Use the CONNECT BY clause. A variation of this should work for you:

select user_id, name
 from emp
start with name='Joe'
connect by supervisor = prior user_id;

--
Ed Prochak
Magic Interface, Ltd.
ORACLE services
440-498-3700 <<<NOTE new number


Sent via Deja.com http://www.deja.com/
Before you buy.
Received on Thu Oct 07 1999 - 00:00:00 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US