buchpetzer Geschrieben 5. Januar 2009 Teilen Geschrieben 5. Januar 2009 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: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 5. Januar 2009 Teilen Geschrieben 5. Januar 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
buchpetzer Geschrieben 6. Januar 2009 Autor Teilen Geschrieben 6. Januar 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
buchpetzer Geschrieben 6. Januar 2009 Autor Teilen Geschrieben 6. Januar 2009 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')); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
buchpetzer Geschrieben 6. Januar 2009 Autor Teilen Geschrieben 6. Januar 2009 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')); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.