Join auf Felder jenseits des PK

Welcome to the POB User Group Online Community! Forums PUG DACH Join auf Felder jenseits des PK

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #3730
    ts
    Member

    Vielleicht bin ich an der Stelle gerade einfach nur blind, aber ich komm gerade nicht weiter: Gibt es eine Möglichkeit, mit Bordmitteln einen Join auf eine Entität zu vollziehen, ohne den PK zu verwenden?

    Hintergrund ist: Ich hab sowohl in der Customer-Table als auch in der Item-Table jeweils Stringfelder mit verschiedenen Attributen aus dem Active Directory. Nun hab ich bspw. beim Customer die zwei Felder Virtual_ADDistinguishedName und Virtual_ADManagerDistinguishedName (das entspricht dem “manager-Attribut des LDAP).

    Was ich gerne würde, ist, einen Join auf die Customer Table anzulegen, um eine Subview mit dem Namen des Managers im Window einzubinden. Aber dafür kann ich nicht den PK direkt verwenden, sondern muss den DistinguishedName abgleichen. Ich hab das darüber zu lösen versucht, dass ich mir den PK des Managers über eine berechnete Spalte hole:

    (SELECT CUSM.Customer_pk FROM Customer AS CUSM LEFT OUTER JOIN Customer AS CUS ON CUSM.Virtual_ADDistinguishedName = CUS.Virtual_ADManagerDistinguishedName)

    Eine Spalte mit einer Definition anzulegen, ist auch nicht das Problem: ColumnType hab ich auf numeric festgesetzt. (ColumnType Join in Verbindung mit der Definition mag er nicht, da will er direkt die referenzierte Tabelle und ignoriert fleißig, was ich in die Definition reingeschrieben habe).

    Nur wenn ich dann ein Control mit der Subview anlegen will, dann bietet er mir die Option Subview gar nicht erst an. Mir fallen jetzt eine Reihe von verschlungenen Wegen ein, die man gehen könnte. Aber die Frage gerade eben ist, ob es da einen Weg mit Bordmitteln gibt. Fällt Euch dazu was ein?

    #3732
    ts
    Member

    Vielleicht sollte ich darauf hinweisen, dass der obige JOIN für die SQL-Server-Darstellung gilt. Die Definition bei mir in der Column sieht natürlich so aus:
    (SELECT CUS.Customer_pk FROM Customer AS CUS WHERE CUS.Virtual_ADDistinguishedName = Virtual_ADManagerDistinguishedName)

    #3733
    Stefan Reichelt
    Participant

    An diesem Problem habe ich mir auch schon die Zähne ausgebissen, als ich im Aktivitätsfenster ein Subview zum darüber liegenden Fall anzeigen wollte.
    Man kann zwar eine Custom-Join-Spalte mit SQL anlegen, aber die SQL-Abfrage wird dabei komplett ignoriert (wäre mal nen RFC wert).

    Der einzige Ausweg scheint tatsächlich zu sein, eine normale Join-Spalte zu nutzen und diese per Trigger mit dem richtigen PK-Wert zu befüttern. Das heißt: Bei Insert des Datensatzes und bei Update auf dem Fremdschlüsselfeld muss der per SQL/PQL ermittelte PK-Wert dort automatisch eingetragen werden…

Viewing 3 posts - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.