Hi,
 

 I have a table with the following DDL:
 

 CREATE TABLE LOCALITY (
     ID               INTEGER NOT NULL,
     PARENT_ID        INTEGER,
     CT_NODETYPES_ID  INTEGER,
     DESCRIPTION      VARCHAR(30),
 
 );
 

 The foreign key:  CT_NODETYPES_ID refers to a table CT_NODETYPES with the 
following potential values:
 ID DESCRIPTION 1 Country 2 Province 3 Farm registration districts 4 District 
Municipality 5 Metropolitan Municipality 6 Local Municipality 
Typical data for LOCALITY are: 

 ID PARENT_ID CT_NODETYPES_ID DESCRIPTION 1 1 South Africa 2 1 2 CONTINENTAL 
SHELF SOUTH AFRICA 3 1 2 EASTERN CAPE 4 1 2 FREE STATE 5 1 2 GAUTENG 6 1 2 
KWAZULU-NATAL 7 1 2 LIMPOPO 8 1 2 MPUMALANGA 9 1 2 NORTH WEST 10 1 2 NORTHERN 
CAPE 11 1 2 WESTERN CAPE 128 10 3 BARKLY WEST 129 10 3 BRITSTOWN 130 10 3 
CALVINIA 146 11 3 BEAUFORT WEST 147 11 3 BELLVILLE 148 11 3 BREDASDORP 178 9 4 
Bojanala 179 7 4 Capricorn 180 9 4 Central 181 9 4 Bophirima 182 5 5 Ekurhuleni 
183 5 5 Johannesburg 184 5 6 Mogale 185 7 4 Mopani 186 7 4 Sekhukhune 187 7 4 
Vhembe 188 7 4 Waterberg 189 9 4 Southern 190 5 5 Tshwane 

I then typically use (as a foreign key) a record from LOCALITY at the lowest 
level, e.g. ID = 148 as the locality (farm registration district) of an 
abandoned mine or ID = 184 as the locality (Local municipality) of a unsafe 
mine opening.
 

 When I display the data in a grid of a web application or in a column of a 
report, I also want to display the province (ID = 2 in table CT_NODETYPES)
 

 I also want to generate stats from the mine table, e.g.
 

 Select Province_Name, Mine_Name, Count(ID) as Total from V_MINES
 where Province_ID = 4
 Group by Province_Name, Mine_Name
 

 V_MINES is a view spanning several tables.
 

 The problem I have is that (in the MINES table) I do not store the ID of the 
provinces but I store the ID of the farm registration districts (a child node 
of the province node).
 

 In the table for unsafe mine openings, I store the ID of local, metropolitan 
or district municipality.

 

 My use, and knowledge, of recursive common table expressions (CTE) is limited 
to iterate downwards from a node in a tree-structure (used as foreign key in a 
table).
 

 Now what I'm actually want is to look up the parent at a certain level (or 
classified as a certain type) of a "lower" record (node) in a tree-structure.
 

 Surely there must be a way to solve this problem?
 

 

 Regards,
 

 Nols Smit
 

 (Council for Geoscience, South Africa)
 
 

 
 



 
 

 
 



Reply via email to