Problem
All Images of an Diagram (the ImageIds) shall be determined, so that can be read out from the table t_image (see previous article about BLOB and EA).
Approach – Ansatz
Usage of the tables
– t_diagram
– t_diagramobjects
– t_object
Solution – Lösung
SELECT dia.Name As Diagram, IIF(Trim(objstart.[Name]) = 'Text', 'Text', objstart.stereotype) As stereotype, diaobj.RectLeft As x, diaobj.RectTop As y, diaobj.RectRight-diaobj.RectLeft As Width, Abs(diaobj.RectBottom-diaobj.RectTop) As Height, objstart.Object_ID, IIF(Trim(objstart.[Name]) = 'Text', 'Text-'& objstart.Object_ID ,objstart.Alias) As [key], IIF(objstart.[Name] = 'Text', objstart.Note, objstart.[Name]) As phaseName, objstart.[ea_guid] As [guid], diaobj.ObjectStyle, IIF( InStr(diaobj.ObjectStyle, "ImageID")>0, Mid(diaobj.ObjectStyle, InStr(diaobj.ObjectStyle, "ImageID")+8 , Len(diaobj.ObjectStyle)- (InStr( diaobj.ObjectStyle, "ImageID")+8) ), '' ) As ImageId FROM (( [t_diagram] dia LEFT JOIN (Select Diagram_ID, Object_ID, RectLeft, RectTop, RectRight, RectBottom, ObjectStyle from [t_diagramobjects]) diaobj ON dia.[Diagram_ID]=diaobj.[Diagram_ID]) LEFT JOIN [t_object] objstart ON objstart.[Object_ID]=diaobj.[Object_ID]) WHERE objstart.Object_Type IN ('Text','Boundary') AND IIF(InStr(diaobj.ObjectStyle, "ImageID")>0, Mid(diaobj.ObjectStyle, InStr(diaobj.ObjectStyle, "ImageID")+8 , Len(diaobj.ObjectStyle)- (InStr( diaobj.ObjectStyle, "ImageID")+8) ), '') <> '' AND dia.Name='{PutInYourDiagramNameHere}' ORDER BY 12 DESC,1,2,3,4,5,6,7,8,9