Hi there,
Some time ago an SQL query was devised to parse an exported EA DB to Microsoft Access: The query took 30 minutes to run:
SELECT DISTINCT (SELECT to.Name FROM t_Object to WHERE tc.End_Object_ID = to.Object_ID), (SELECT to.Stereotype FROM t_Object to WHERE tc.End_Object_ID = to.Object_ID),
(SELECT to.Name FROM t_Object to WHERE tc.Start_Object_ID = to.Object_ID), (SELECT to.Stereotype FROM t_Object to WHERE tc.Start_Object_ID = to.Object_ID),
Nz(to.Alias, to.Name), tp.Name, (SELECT t2.Name FROM t_package t2 WHERE t2.Package_ID = tp.Parent_ID),
(SELECT t3.Name FROM t_package t3 WHERE t3.Package_ID = (SELECT t2.Parent_ID FROM t_package t2 WHERE t2.Package_ID = tp.Parent_ID)),
(SELECT t4.Name FROM t_package t4 WHERE t4.Package_ID = (SELECT t2.Parent_ID FROM t_package t2 WHERE t2.Package_ID = (SELECT t2.Parent_ID FROM t_package t2 WHERE t2.Package_ID = tp.Parent_ID))),
(SELECT to4.Name FROM t_Object to4 WHERE to4.Object_ID = to.ParentID)
FROM t_package tp, t_object to, t_connector tc
WHERE to.Package_ID = tp.Package_ID AND to.Object_Type = "Activity" AND (to.Object_ID = tc.Start_Object_ID)
Recently with an explosion in contributions to the EA model, the model has got a lot bigger and the query now takes 2.5hrs!!!! It produces a 10 * 3073 output table, which we import to Excel.
What I want to do, is use the power of the EA QSL Query and produce the same results. Attempts so far:
select distinct po.ea_guid as CLASSGUID, po.Object_Type as CLASSTYPE, tEndObj.Name as [Deliverable], tEndObj.Stereotype as [StereoType], po.name as [Object Name]
, po.Alias As [Alias], tp.name as 'Package Name' ,tp2.name as 'Package level -1',tp3.name as 'Package level -2',tp4.name as 'Package level -3', to2.name as [Object Parent]
from ((((((( t_package tp
inner join t_object po on tp.Package_ID = po.Package_ID)
inner join t_object to2 on po.ParentID = to2.object_ID)
inner join t_connector tc on po.Object_ID = tc.Start_Object_ID)
left join t_package tp2 on tp2.Package_ID = tp.Parent_ID)
left join t_package tp3 on tp3.Package_ID = tp2.Parent_ID)
left join t_package tp4 on tp4.Package_ID = tp3.Parent_ID)
inner join t_object tEndObj on tEndObj.Object_ID = tc.End_Object_ID)
where
po.Object_Type in ('Activity')
The result of this query (take 3 seconds ish) and give the same columns (ish) I get what I need, but the rows count is short by about 13 rows. Its vital I get the same output in terms of rows.
Any ideas....