Zum Inhalt springen

Vereinen zweier Abfragen


buchpetzer

Empfohlene Beiträge

Hallo,

ich benötige dringend eure Hilfe:

ich habe folgende Abfragen, die ich gerne zu einer Abfrage vereinen würde.

Abfrage 1 gibt mir Fremdschlüssel mit ihren zugehörigen Datenobjekt und Attribut wieder:

select distinct (key.key_nr), key.key_type, key.key_dobj, dataobject.dobj_name, dataobject.dobj_type, attribute.att_nr, attribute.att_name

from key

inner join dobj_att_rs_key on dobj_att_rs_key.key_nr = key.key_nr

inner join attribute on dobj_att_rs_key.att_nr = attribute.att_nr

inner join dataobject on dataobject.dobj_nr = key.key_dobj

where (key.ins_by=1 and key.key_type in ('F','f') and dataobject.dobj_type in ('V','v'));

Abfrage 2 gibt mir die Primärschlüssel mit ihren Attributen und Datenobjekten wieder, auf welche sich die Fremdschlüssel beziehen:

select key.key_nr as Primary_key, dataobject.dobj_nr, dataobject.dobj_name

from key

inner join dataobject on dataobject.dobj_nr = key.key_dobj

where (key_nr in (select key.key_reference from key));

Ich habe den Tipp bekommen die Joins mehrmals mit unterschiedlichen Aliasnamen durchzuführen. Allerdings weiß ich nicht wie. Ich hoffe ihr könnt mir helfen.

Hier seht ihr den Aufbau der Datenbank: 2254d1230040034-schluesselbezoehungen-metadatenbank-diagramm-md.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es fehlt der Hinweis auf das DBMS. Im Grunde kann man das oft mit dem Schlüsseltwort "as" oder "alias" lösen. Infos dazu würde ich aber in der Dokumentation des DBMS nachschlagen.

Die Selects werden eben einfach ineinander gesetzt bzw Du müsstest dann noch auf die entsprechenden JOIN-ON Verbindungen zwischen den Selects achten. Da aus Deinem Posting nicht klar hervorgeht, wie die Ergebnismenge der beiden Abfragen aussehen soll, ist so direkt ein Verbinden nicht möglich (Stichworte: left / right join, inner join usw)

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Phill,

erstmal danke für die Antwort.

1. Ich arbeite Oracle 10g Database (XE)

2. Das Ergebnis der Abfrage soll folgendes beinhalten:

- Key_Nr des Fremdschlüssels aus Key

- Key_Type des Fremdschlüssels aus Key

- Att_Nr des Fremdschlüsselattributs aus Attribute

- Att_Name des Fremdschlüsselattributs aus Attribute

- DOBJ_Nr des Fremdschlüsselattributs aus Dataobject

- DOBJ_Name des Fremdschlüsselattributs aus Dataobject

- Key_Nr des Primärschlüssels auf den der Fremdschlüssel referenziert aus Keys

- DOBJ_Nr zu dem der Primärschlüssel gehört aus Dataobject

- DOBJ_Name zu dem der Primärschlüsseö gehört aus Dataobject

Ich hoffe du kannst mir weiterhelfen.

Viele Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, ich bin jetzt so weit, dass er mir alle Foreign Keys mit ihren zugehörigen Attributen und Datenobjekten und die dazugehörige Nr des Primary Keys auf den der FK referenziert anzeigt. Aber wie schaffe ich es, dass er mir das Datenobject anzeigt zu dem der Primary Key gehört????

select distinct (key.key_nr) as Foreign_Key_nr, key.key_type, key.key_dobj as DOBJ_of_FK, DO1.dobj_name as DOBJ_name_of_FK, attribute.att_nr as attribte_nr_of_FK, attribute.att_name as attribute_name_of_FK, key.key_reference as Primary_Key_nr

from key

inner join dobj_att_rs_key on dobj_att_rs_key.key_nr = key.key_nr

inner join attribute on dobj_att_rs_key.att_nr = attribute.att_nr

inner join dataobject DO1 on DO1.dobj_nr = key.key_dobj

where (key.ins_by=1 and key.key_type in ('F','f'));

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe die Lösung gefunden. Ich habe key über key_reference auf key_nr in key gejoint und dann noch einmal mit dem Dataobject. Die Lösung sieht folgendermaßen aus:

select distinct (key.key_nr) as Foreign_Key_nr, key.key_type, key.key_dobj as DOBJ_of_FK, DO1.dobj_name as DOBJ_name_of_FK, attribute.att_nr as attribte_nr_of_FK, attribute.att_name as attribute_name_of_FK, key.key_reference as Primary_Key_nr, DO2.dobj_nr as DOBJ_nr_PK, DO2.dobj_name as DOBJ_name_PK

from key

inner join dobj_att_rs_key on dobj_att_rs_key.key_nr = key.key_nr

inner join attribute on dobj_att_rs_key.att_nr = attribute.att_nr

inner join dataobject DO1 on DO1.dobj_nr = key.key_dobj

INNER JOIN key k ON k.key_nr = key.key_reference

inner join dataobject DO2 on k.key_dobj = DO2.dobj_nr

where (key.ins_by=1 and key.key_type in ('F','f'));

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...