Hi,

I created a recursive Sql query to lookup the nodes of a thread and where each 
node is classified according to a tree-structure (the variable Progress_Type_ID 
in the query  which is linked to ID, the primary key of the tree-structure 
Progress_Type).
The following SQL to do the recursive query:


/*--------------------------Bof query-------------------------*/
With Recursive
RecurseProgress as
(
 Select ID, Parent_ID, OldMines_ID, Progress_Type_ID, Progress_Type_Parent_ID, 
Progress_Type_Description,
     Instance_Date, Progress, 1 as ALevel from V_OldMines_Progress
   where Parent_ID is null
 Union all
 Select Child.ID, Child.parent_id, Child.OldMines_ID,  Child.Progress_Type_ID, 
Child.Progress_Type_Parent_ID,
     Child.Progress_Type_Description, Child.Instance_Date, Child.Progress, 
ALevel + 1 from V_OldMines_Progress Child 
  inner join RecurseProgress as CR1 on Child.parent_ID = CR1.ID
)
 
Select  * from RecurseProgress Pr
  Where Pr.OldMines_ID = :ID
 order by Pr.ID
/*-------------------------Eof query------------------------------*/
 
 
If I execute this query, ID is requested as the parameter
Now I want to modify it because Progress_Type_ID is also the primary key of a 
tree-structure and if I execute the modified query, it must ask for the two 
parameters, the current ID for the view V_OldMines_Progress  and the new 
starting point of the primary key of table Progress_Type.

I tried the following and then it asks for two parameters:
 ID_ROOTPRGRESSTYPE   and   ID (any value for ID_ROOTPRGRESSTYPE   have the 
same results):
 
/*-------------------------Bof query------------------------------*/ 
With Recursive
RecurseProgressType as
(
 Select ID from Progress_Type
   where ID = :ID_RootProgressType
 Union all
 Select TP.ID from Progress_Type TP, RecurseProgressType Parent
   where TP.Parent_ID = Parent.id
)
,
RecurseProgress as
(
 Select ID, Parent_ID, OldMines_ID, Progress_Type_ID, Progress_Type_Parent_ID, 
Progress_Type_Description,
     Instance_Date, Progress, 1 as ALevel from V_OldMines_Progress
   where Parent_ID is null
 Union all
 Select Child.ID, Child.parent_id, Child.OldMines_ID,  Child.Progress_Type_ID, 
Child.Progress_Type_Parent_ID,
     Child.Progress_Type_Description, Child.Instance_Date, Child.Progress, 
ALevel + 1 from V_OldMines_Progress Child , RecurseProgressType
  inner join RecurseProgress as CR1 on Child.parent_ID = CR1.ID
)
 
Select  * from RecurseProgress Pr
  Where Pr.OldMines_ID = :ID
 order by Pr.ID
/*-------------------------Eof query------------------------------*/


Any idea what I did wrorg?

Regards,

Nols Smit

Council for Geoscience, South Africa

Reply via email to