Announcement

Collapse
No announcement yet.

SQL join Statement unklar

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL join Statement unklar

    Hallo liebe Leute,
    .. ich möchte alle FK-Beziehungen in meiner DB als Klartext auslesen und hab jetzt nach langem probieren & scheitern das untere SQL Kommndo zusammengebracht.

    Was mir nicht ganz klar ist wie das "and" Statement (durch zufall probiert -ein "where" würde für mich irgendwie passender klingen) in den beiden join Anweisungen eigentlich "funktioniert" und irgendwie hab ich das Gefühl als würde ich das Pferd von hinten aufzäumen.
    Also Abfrage macht was sie soll (freu) wirkt aber für mich (Anfänger) "unrund".
    - danke für eure Tipps und Hinweise

    Michael


    [highlight=sql] select FK.name 'Constr. Bezeichnung', Tab.name 'TabPK',
    COL.name 'ColPK' , Tab1.name 'TabFK', COL1.name 'ColFK'

    from sys.foreign_key_columns as fkCol

    inner join sys.foreign_keys as FK on FK.object_id = fkCol.constraint_object_id -- FK Name auflösen

    join sys.tables as Tab on FKCOl.parent_object_id = Tab.object_id
    join sys.tables as Tab1 on fkCol.referenced_object_id = Tab1.object_id

    left join (sys.columns as COL join sys.tables on sys.tables.object_id = COL.object_id)
    on fkCol.parent_column_id = COL.column_id and sys.tables.object_id = fkCol.parent_object_id

    left join (sys.columns as COL1 join sys.tables as xxy on xxy.object_id = COL1.object_id)
    on fkCol.referenced_column_id = COL1.column_id and xxy.object_id = fkCol.referenced_object_id[/highlight]

  • #2
    .. ich antworte mir mal selbst :-) also das "unrunde" ist glaub ich weg - das Verständnis wieso dort ein "and" funktioniert fehlt noch....

    [highlight=sql]select FkCol.parent_object_id, COL.object_id 'Par ID',fkCol.referenced_object_id, COL1.object_id, FK.name 'Constr. Bezeichnung', Tab.name 'TabPK',
    COL.name 'ColPK' , Tab1.name 'TabFK' , COL1.name 'ColFK'

    from sys.foreign_key_columns as fkCol

    inner join sys.foreign_keys as FK on FK.object_id = fkCol.constraint_object_id -- FK Name auflösen

    join sys.tables as Tab on FKCOl.parent_object_id = Tab.object_id
    join sys.tables as Tab1 on fkCol.referenced_object_id = Tab1.object_id

    join sys.columns as COL on FkCol.parent_column_id = COL.column_id
    join sys.columns as COL1 on fkCol.referenced_column_id = COL1.column_id

    where COL.object_id=fkCol.parent_object_id
    and COL1.object_id = fkCol.referenced_object_id[/highlight]

    Comment

    Working...
    X