| SQL for Parent-Child Hierarchy [message #573025] |
Thu, 20 December 2012 01:17  |
 |
sanushks
Messages: 8 Registered: December 2012 Location: India
|
Junior Member |
|
|
Please suggest which would be best way to achieve the below logic.
SQL to pick up parent child relationship within same table with a certain logic.
Example:
mod_product_number Product_Hierarchy
H555888 PH05678
H888987 H555888
H8889 H555888
H9955 H555888
H999999 H555888
P6666 H999999
P5555 H999999
Example: I expect the rows with H8889,H9955 & P6666 & P5555 to be sub-category values value for product hierarchy H555888.
If there are rows with H8888987 as Product_hierarchy, we will pull up those rows too for product hierarchy H555888.
The extra condition is we drill down only on 7 character mod_prod_number not on 5 character mod_prod_number. We pull out all sub category mod_prod_number for all distinct Product hierarchy.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Re: SQL for Parent-Child Hierarchy [message #573215 is a reply to message #573200] |
Mon, 24 December 2012 04:39   |
 |
vnithya
Messages: 20 Registered: December 2012 Location: Chennai
|
Junior Member |
|
|
Hi sanushks,
I have tried this output.Hope this Query may satisfy your resultset..
==================================================================================================
CREATE TABLE PRODUCT_PART_TABLE (MOD_PRODUCT_NUMBER VARCHAR2(50), PRODUCT_HIERARCHY VARCHAR2(50));
INSERT INTO PRODUCT_PART_TABLE VALUES ('H555888' , 'PH05678');
INSERT INTO PRODUCT_PART_TABLE VALUES ('H8889' , 'H555888');
INSERT INTO PRODUCT_PART_TABLE VALUES ('H9955' , 'H555888');
INSERT INTO PRODUCT_PART_TABLE VALUES ('H999999' , 'H555888');
INSERT INTO PRODUCT_PART_TABLE VALUES ('P5555' , 'H999999');
INSERT INTO PRODUCT_PART_TABLE VALUES ('P6666' , 'H999999');
INSERT INTO PRODUCT_PART_TABLE VALUES ('H999999' , 'PH08968');
INSERT INTO PRODUCT_PART_TABLE VALUES ('H8888' , 'H999999');
INSERT INTO PRODUCT_PART_TABLE VALUES ('H7777' , 'H999999');
SELECT MOD_PRODUCT_NUMBER,PRODUCT_HIERARCHY
FROM PRODUCT_PART_TABLE
GROUP BY MOD_PRODUCT_NUMBER,PRODUCT_HIERARCHY
MOD_PRODUCT_NUMBER PRODUCT_HIERARCHY
H9955 H555888
H8889 H555888
H555888 PH05678
P6666 H999999
H8888 H999999
P5555 H999999
H7777 H999999
H999999 H555888
H999999 PH08968
====================================================================================================
CREATE TABLE PRODUCT_HIERARCHY (PROD_HIER VARCHAR2(50))
INSERT INTO PRODUCT_HIERARCHY VALUES ('PH05678');
INSERT INTO PRODUCT_HIERARCHY VALUES ('PH08968');
SELECT *
FROM PRODUCT_HIERARCHY
PROD_HIER
PH08968
PH05678
=====================================================================================================
CREATE TABLE OUTPUT_HIER (PRODUCT_HIERARCHY VARCHAR2(50) , MOD_PRODUCT_NUM VARCHAR2(50));
SELECT *
FROM OUTPUT_HIER
PROD_HIER MOD_PRODUCT_NUMBER
----------------------------------
Parent-Child-Relationship
=========================
Output Table Result must be like this am i right
SELECT * FROM OUTPUT_HIER
==================================
Product Hierarchy | mod_product_num
=============================================
PH05678 | H555888 | H8889
PH05678 | H555888 | H9955
PH05678 | H555888 | H999999 | P5555
PH05678 | H555888 | H999999 | P6666
PH05678 | H555888 | H999999 | H8888
PH05678 | H555888 | H999999 | H7777
PH08968 | H999999 | H8888
PH08968 | H999999 | H7777
PH08968 | H999999 | P5555
PH08968 | H999999 | P6666
PH08968 | H999999 | H555888 | H8889
PH08968 | H999999 | H555888 | H9955
=======================================================================================================
INSERT INTO OUTPUT_HIER
(SELECT PROD_HIER , MOD_PRODUCT_NUMBER
FROM PRODUCT_PART_TABLE A,PRODUCT_HIERARCHY B
WHERE PROD_HIER NOT IN (
SELECT PRODUCT_HIERARCHY
FROM PRODUCT_PART_TABLE
WHERE MOD_PRODUCT_NUMBER NOT IN (
SELECT A.MOD_PRODUCT_NUMBER
FROM PRODUCT_PART_TABLE A,PRODUCT_HIERARCHY B
WHERE A.PRODUCT_HIERARCHY = B.PROD_HIER
)
)
AND MOD_PRODUCT_NUMBER NOT IN (
SELECT A.MOD_PRODUCT_NUMBER
FROM PRODUCT_PART_TABLE A,PRODUCT_HIERARCHY B
WHERE A.PRODUCT_HIERARCHY = B.PROD_HIER
)
)
===============================================
PROD_HIER MOD_PRODUCT_NUMBER
PH08968 H8889
PH08968 P5555
PH08968 H9955
PH08968 P6666
PH08968 H8888
PH08968 H7777
PH05678 H8889
PH05678 P5555
PH05678 H9955
PH05678 P6666
PH05678 H8888
PH05678 H7777
==========================================================================================================
[EDITED by LF: applied [code] tags]
[Updated on: Mon, 24 December 2012 15:44] by Moderator Report message to a moderator
|
|
|
|
|
|
|
|
|
|
|
|