Eine sehr oft gestellte Aufgabe bei der Modell-Suche ist, dass für jedes Modell-Element seine Tagged Values als jeweils in einer eigenen Spalte ausgegeben werden sollen.
Tagged Values werden in der Tabelle t_objectproperties gespeichert. Wir können nun die Tabelle t_object, in der alle Modell-Elemente gespeichert werden mit der
Tabelle t_objectproperties verknüpfen, so erhalten wir alle Tagged Values für jedes Modell-Element.
SELECT t_object.Name, t_objectproperties.Property, t_objectproperties.Value FROM t_object LEFT OUTER JOIN t_objectproperties ON t_object.Object_ID = t_objectproperties.Object_ID
Doch leider erhalten wir dabei jeweils eine Spalte für den Tag-Namen und eine für den Tag-Wert und dies für jedes Tagged Value eines Modell-Element.
Wir erhalten also eine Menge an duplizierten Zeilen, die sich nur durch ihren Tag-Namen oder Tag-Wert unterscheiden.
Wir hätten aber gerne für jeden Tag-Namen eine eigene Spalte und falls das Modell-Element einen Wert für diesen Tag-Namen hat, soll dieser angezeigt werden.
Was wir nun tun können ist, dass wir alle Modell-Elemente suchen und bestimmte Tag-Namen definieren, welche wir als eigene Spalten ausgeben möchten.
SELECT t_object.Object_ID, t_object.Name, a.Value AS myA, //gib eine Spalte mit Namen myA aus und schreibe den Wert des Tags aus der Menge a hinein. b.Value AS myB //gib eine Spalte mit Namen myB aus und schreibe den Wert des Tags aus der Menge b hinein. FROM (t_object LEFT OUTER JOIN t_objectproperties AS a ON (t_object.Object_ID = a.Object_ID AND a.Property = 'myA')) // alle Tagged Values des Modell-Elementes mit dem Namen myA LEFT OUTER JOIN t_objectproperties AS b ON (t_object.Object_ID = b.Object_ID AND b.Property = 'myB') // alle Tagged Values des Modell-Element mit dem Namen myB
Mit diesem Ansatz erhalten wir zwar nicht alle Tagged Values jedes Modell-Element, aber für jeden definierten Tag-Namen eine eigene Spalte.
Fügen wir in der Projektion noch folgende Zeilen hinzu, wird der Tagged Value View alle weiteren Tags des selektierten Modell-Element in der Ergebnistabelle anzeigen.
SELECT t_object.ea_guid AS CLASSGUID, t_object.Object_Type AS CLASSTYPE,