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!

How to get ultimate parent in this scenario

NSK2KSNJul 25 2014 — edited Jul 25 2014
SourcingItemSourceDestination
NSK_SOURCINGITEM1VENDOR1DC1
NSK_SOURCINGITEM1DC1DC2
NSK_SOURCINGITEM1DC2DC3
NSK_SOURCINGITEM1DC3DC4
NSK_SOURCINGITEM2VENDOR2VENDOR1
NSK_SOURCINGITEM2VENDOR1VENDOR3
NSK_SOURCINGITEM2VENDOR3DC4
NSK_SOURCINGITEM2DC4DC5
NSK_SOURCINGITEM2DC5DC6

I have table called sourcing where primary key is (sourcing, item, source, destination)

How data to be read as

'an Item 1' flow is VENDOR1 - DC4 Via (VENDOR1 - DC1, DC1 - DC2, DC2 - DC3,  DC3 - DC4) which is evident from the table

an Item 2 flow is VENDOR2 - DC6 Via (VENDOR2 - VENDOR1, VENDOR1 - VENDOR3, VENDOR3 - DC4, DC4 - DC5, DC5 - DC6)

Item always flows from (Vendor to Vendor) (or) (Vendor to DC) (or) (DC to DC) but not from DC to Vendor

Expected Output:

I need the ultimate source as Initial source from where the Item has been initiated

SourcingItemSourceDestinationUltimate Source
NSK_SOURCINGITEM1VENDOR1DC1VENDOR1
NSK_SOURCINGITEM1DC1DC2VENDOR1
NSK_SOURCINGITEM1DC2DC3VENDOR1
NSK_SOURCINGITEM1DC3DC4VENDOR1
NSK_SOURCINGITEM2VENDOR2VENDOR1VENDOR2
NSK_SOURCINGITEM2VENDOR1VENDOR3VENDOR2
NSK_SOURCINGITEM2VENDOR3DC4VENDOR2
NSK_SOURCINGITEM2DC4DC5VENDOR2
NSK_SOURCINGITEM2DC5DC6VENDOR2

I also have loc_sample table with below data

LOCLOC_TYPE
VENDOR11
DC13
DC23
DC33
DC43
VENDOR21
VENDOR31
DC53
DC63
DC73

Insert statements for LOC_SAMPLE

/* Formatted on 7/25/2014 9:55:10 AM (QP5 v5.240.12305.39446) By Sunil Kumar Noothi */

SET DEFINE OFF;

INSERT INTO LOC_SAMPLE (LOC, LOC_TYPE)

     VALUES ('VENDOR1', 1);

INSERT INTO LOC_SAMPLE (LOC, LOC_TYPE)

     VALUES ('DC1    ', 3);

INSERT INTO LOC_SAMPLE (LOC, LOC_TYPE)

     VALUES ('DC2    ', 3);

INSERT INTO LOC_SAMPLE (LOC, LOC_TYPE)

     VALUES ('DC3    ', 3);

INSERT INTO LOC_SAMPLE (LOC, LOC_TYPE)

     VALUES ('DC4    ', 3);

INSERT INTO LOC_SAMPLE (LOC, LOC_TYPE)

     VALUES ('VENDOR2', 1);

INSERT INTO LOC_SAMPLE (LOC, LOC_TYPE)

     VALUES ('VENDOR3', 1);

INSERT INTO LOC_SAMPLE (LOC, LOC_TYPE)

     VALUES ('DC5    ', 3);

INSERT INTO LOC_SAMPLE (LOC, LOC_TYPE)

     VALUES ('DC6    ', 3);

COMMIT;

Query I Used :

Am able to acheive requirement when there is only one Vendor in the Source  for example for Item 1

SELECTITEM,SOURCE,CONNECT_BY_ROOTSOURCE ULTIMATE_SOURCE

      FROM SOURCING_SAMPLE SS, LOC_SAMPLE L

     WHERE SS.SOURCE = L.LOC

START WITH L.LOC_TYPE = 1

CONNECTBYPRIOR DEST =SOURCE;


Below are Insert statements for the table

SET DEFINE OFF;

INSERT INTO SOURCING_SAMPLE (SOURCING,

                             ITEM,

                             SOURCE,

                             DEST)

     VALUES ('NSK_SOURCING',

             'ITEM1',

             'VENDOR1',

             'DC1');

INSERT INTO SOURCING_SAMPLE (SOURCING,

                             ITEM,

                             SOURCE,

                             DEST)

     VALUES ('NSK_SOURCING',

             'ITEM1',

             'DC1    ',

             'DC2');

INSERT INTO SOURCING_SAMPLE (SOURCING,

                             ITEM,

                             SOURCE,

                             DEST)

     VALUES ('NSK_SOURCING',

             'ITEM1',

             'DC2    ',

             'DC3');

INSERT INTO SOURCING_SAMPLE (SOURCING,

                             ITEM,

                             SOURCE,

                             DEST)

     VALUES ('NSK_SOURCING',

             'ITEM1',

             'DC3    ',

             'DC4');

INSERT INTO SOURCING_SAMPLE (SOURCING,

                             ITEM,

                             SOURCE,

                             DEST)

     VALUES ('NSK_SOURCING',

             'ITEM2',

             'VENDOR2',

             'VENDOR1');

INSERT INTO SOURCING_SAMPLE (SOURCING,

                             ITEM,

                             SOURCE,

                             DEST)

     VALUES ('NSK_SOURCING',

             'ITEM2',

             'VENDOR1',

             'VENDOR3');

INSERT INTO SOURCING_SAMPLE (SOURCING,

                             ITEM,

                             SOURCE,

                             DEST)

     VALUES ('NSK_SOURCING',

             'ITEM2',

             'VENDOR3',

             'DC4');

INSERT INTO SOURCING_SAMPLE (SOURCING,

                             ITEM,

                             SOURCE,

                             DEST)

     VALUES ('NSK_SOURCING',

             'ITEM2',

             'DC4',

             'DC5');

INSERT INTO SOURCING_SAMPLE (SOURCING,

                             ITEM,

                             SOURCE,

                             DEST)

     VALUES ('NSK_SOURCING',

             'ITEM2',

             'DC5    ',

             'DC6');

COMMIT;

Corrected Insert statements

This post has been answered by Frank Kulash on Jul 25 2014
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 22 2014
Added on Jul 25 2014
4 comments
297 views