dynamische Fremschlüsseln abfrage in eine Tabelle

Gast #2733211
Lesenswert?

Hallo Zusammen,

Problembeschreibung:

Ich habe eine Tabelle, die mehr als 100 Spalte hat. Ich hole es mir die 
Tabelle dynamisch von der Datenbanken und bau es mir auch das GUI 
entsprechend dynamisch(ja nach dem was einen Datentyp die Spalten haben, 
Data Format,bit,varchar.... ).Das ganze Aufwand ist so gedacht damit der 
User auch Spalten in der Datenbank einlegen kann. Um diese Änderungen zu 
ermöglichen muss auch die Tabelle dynamisch abgefragt und entsprechend 
das GUI gebaut.

Problem ist: die Tabelle könnte mehrere Fremdschlüsseln haben, die ich 
auch dynamisch abfragen möchte (Wie?).

Die Fremdschlüsseln der Tabelle brauche ich um die Bezeichnungen von der 
Muttertabellen

Zb:Fremdschlüssel 1 refreziert auf die TabelleA,
Fremdschlüssel 2 refreziert auf die TabelleB .....

Ich möchte durch die Fremdschlüsseln der Bezeichungen von TabelleA, 
TabelleB,TabelleC......

Durch diese Fremdschlüsseln, hole ich mir die entsprechenden 
Bezeichungen und stecke ich die in JComboBox.

Ich benutze SQLServer für die Datenbanken


Für jeden Tipps bedanke ich mich herzlich.
Gast #2733454
Lesenswert?

Aeron schrieb:
> Hallo und danke für die super schnelle Antwort.
> Die befehle, die du mir gegeben hast betrifft die ganze DB.
> Ich möchte aber diese Abfrage nach dem Fremdschlüssel spezifisch für
> eine Tabelle .

dann muss du halt noch ein where hinschreiben. Aus der sysobjects 
bekommt du die ID der tabelle und dann kannst du in foreign_keys die 
keys auslesen. Die Betroffen spalten stehen noch in foreign_key_columns
Gast #2733596
Lesenswert?

Um die Fremdschlüsseln zu holen habe ich so gemacht :

select * from sys.foreign_keys where parent_object_id=(select id from 
sys.sysobjects where name='Rechnungen')

ich bekomme 20 Fremdschlüsseln.


und jetzt wollte ich durch die Fremdschlüsseln der Bezeichnungen der 
Ursprüngliche Tabelle holen.

In SQL bin noch einen Anfänger ...

Danke
Gast #2733611
Lesenswert?

select
   c2.name as [Column],
   o2.name as RefTable,
   c2.name as RefColumn
from sys.sysobjects o
join sys.foreign_keys f
   on f.parent_object_id = o.id
join sys.sysobjects o2
   on o2.id = f.referenced_object_id
join sys.foreign_key_columns c
   on c.constraint_object_id = f.object_id
join sys.columns c2
   on c2.object_id = c.parent_object_id
   and c2.column_id = c.parent_column_id
join sys.columns c3
   on c3.object_id = c.referenced_object_id
   and c3.column_id = c.referenced_column_id
where
   o.name='Rechnungen'
   and o.type = 'U'

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren