2009-07-01 3 views
1

Ich abzufragen eine Iseries von ODBC in meiner App und versuche, eine Abfrage, die Ergebnisse aus 2 Tabellen zurückgibt. Ich muss den Tabellen beitreten, aber die Tabellen sind in verschiedenen Bibliotheken. Ich möchte keine Bibliotheksbezeichner in meiner Abfrage verwenden, da sich meine Bibliotheken ändern, wenn ich mich von dev> qa> prod aus bewege. Ich bin mir jedoch sicher, dass diese Tabellen nur in diesen Bibliotheken vorhanden sind und dass es keine Duplikate in anderen Bibliotheken geben wird. Gibt es eine Möglichkeit, dies ohne Angabe der Iseries-Bibliothek zu tun?AS400/DB2 Cross-Bibliothek Abfrage-Problem

In essense, möchte ich dies:

select DISTINCT GIDNBR, VSL00100.GRNAME 
FROM **QACOMMON**.CMPGRID2 CMPGRID2 INNER JOIN **QAVISLIVE**.VSL00100 VSL00100 ON VSL00100.GRNO=CMPGRID2.GIDNBR AND 
         VSL00100.GRSUB=CMPGRID2.GIDSUB AND 
         VSL00100.GRLOC=CMPGRID2.GIDLOC AND 
        VSL00100.GRPOOL=CMPGRID2.GIDPOL 

wie folgt aussehen:

select DISTINCT GIDNBR, VSL00100.GRNAME 
FROM CMPGRID2 CMPGRID2 INNER JOIN VSL00100 VSL00100 
ON 
VSL00100.GRNO=CMPGRID2.GIDNBR AND 
        VSL00100.GRSUB=CMPGRID2.GIDSUB AND 
        VSL00100.GRLOC=CMPGRID2.GIDLOC AND 
       VSL00100.GRPOOL=CMPGRID2.GIDPOL 

Irgendwelche Ideen?

+1

Nur ein kleiner Kommentar - Wenn Sie eine Bibliothek mit dem Anfangsbuchstaben "Q" benennen, wird sie nicht als Teil einer 'SAVLIB * ALLUSR'-Sicherungsoperation gespeichert. Stellen Sie sicher, dass bei jedem Speichervorgang die richtigen Daten abgerufen werden. – user2338816

Antwort

4

Sie müssen in die Konfiguration für Ihre ODBC-Verbindung gehen. Klicken Sie auf der Verbindung, die Sie verwenden, auf "Konfigurieren" und wählen Sie die Registerkarte "Server". Die Bibliotheksliste ist die Option, mit der Sie spielen müssen.

Anhand Ihrer Beispiele sieht es so aus, als müssten Sie sagen "QACOMMON QAVISLIVE". (ohne Anführungszeichen)

Außerdem müssen Sie die Namenskonvention in * SYS anstelle von * SQL ändern und das Standard-Sammlungsfeld leer lassen. Stellen Sie sicher, dass der Systemadministrator den CURLIB-Parameter für das verwendete Benutzerprofil auf den Speicherort der neuen Dateien setzt.

Dann speichern Sie es einfach und versuchen Sie es erneut. Leider müssen Sie entweder unterschiedliche Datenquellen haben oder die ODBC-Verbindung ändern, wenn Sie zwischen Test, Produktion und allem, was Sie sonst noch haben, wechseln.

+0

Versucht das und recvd a 'SQL0204 - cmpgrid2 in webaccess typ * DATEI nicht gefunden' wo webaccess ist der Benutzername Alles andere zu versuchen? –

+0

Okay, es gibt noch ein paar Änderungen, die Sie vornehmen müssen. Ich habe meine Antwort entsprechend aktualisiert. –

+1

Auch Sie wollen Ihre Anwendung ausgiebig testen, um sicherzustellen, dass die oben genannten Änderungen andere Dinge nicht brechen. Die Systembenennungskonvention verwendet einen Schrägstrich (/) beim Auflösen der Bibliothek und des Dateinamens anstelle des Punktes (.), Den SQL normalerweise verwendet. –