Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Understanding multiple conditions in connect by prior clause Oracle

Pappu23Jul 17 2013 — edited Jul 18 2013

Hi ,

Can some one please explain me how to comprehend/understand  multiple conditions in connect by prior conditions with some example data.

I am creating a table like this

CREATE TABLE FAMiLY_TREE

(

GRAND_FATHERID number,

FATHER_ID number,

SON_ID number,

person_name varchar(20)

);

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(NULL, NULL , 5 , 'Mr X ' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(null, 5 , 6 , 'Dave' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(5, 6 , 7 , 'Vinny' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(5, 6 , 16 , 'Omy' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(5, 6 , 17 , 'Vijjy' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(6, 7 , 8 , 'Vicky' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(6, 7 , 9 , 'Varis' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(7, 8 , 10 , 'Vshnu' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(7, 8 , 11 , 'dyna' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(8, 10 , 14 , 'Marry' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(8, 10 , 15 , 'Mac' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(7, 9 , 12 , 'Garry' );

INSERT INTO  FAMILY_TREE (GRAND_FATHERID ,FATHER_ID , SON_ID , PERSON_NAME ) VALUES

(7, 9 , 13 , 'Ganny' );

SELECT

LPAD(' ', LEVEL*3) || PERSON_NAME FROM FAMILY_TREE

START WITH SON_ID= 6

CONNECT BY PRIOR SON_ID = FATHER_ID

AND PRIOR FATHER_ID = GRAND_FATHERID ;

SELECT

LPAD(' ', LEVEL*3) || PERSON_NAME FROM FAMILY_TREE

START WITH SON_ID= 6

CONNECT BY PRIOR SON_ID = FATHER_ID ;


Both These query return the same o/p

   Dave

      Vinny

         Vicky

            Vshnu

               Marry

               Mac

            dyna

         Varis

            Garry

            Ganny

      Omy

      Vijjy

Can some one please explain me comprehension of both these query or give me a example where i can understand multiple connect by prior conditions

Thanks

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 15 2013
Added on Jul 17 2013
9 comments
2,880 views