2009-07-01 2 views
1

J'interroge un Iseries à partir d'ODBC dans mon application et j'essaie d'effectuer une requête qui renvoie les résultats de 2 tables. J'ai besoin de rejoindre les tables mais les tables sont dans différentes bibliothèques. Je ne veux pas utiliser d'identifiants de bibliothèque dans ma requête car mes bibliothèques changent à mesure que je me déplace de dev> qa> prod. Cependant, je suis certain que ces tables ne seront que dans ces bibliothèques et qu'il n'y aura pas de doublons dans d'autres bibliothèques. Existe-t-il un moyen de le faire sans spécifier la bibliothèque Iseries?Problème de requête inter-bibliothèque AS400/DB2

En Essense, je veux ceci:

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 

pour ressembler à ceci:

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 

Toutes les idées?

+1

Juste un commentaire mineur - Nommer une bibliothèque avec la lettre initiale "Q" la supprime d'être sauvé dans le cadre d'une opération de sauvegarde 'SAVLIB * ALLUSR '. Assurez-vous que toutes les sauvegardes obtiennent les bonnes données. – user2338816

Répondre

4

Vous devez entrer dans la configuration de votre connexion ODBC. Sur la connexion que vous utilisez cliquez sur "Configurer", puis sélectionnez l'onglet "Serveur". L'option de liste de bibliothèque est ce dont vous aurez besoin pour jouer. Sur la base de vos exemples, il semble que vous ayez besoin de dire "QACOMMON QAVISLIVE". (sans guillemets)

Vous devrez également modifier la convention de dénomination en * SYS au lieu de * SQL et rendre le champ de collection par défaut vide. Assurez-vous que votre administrateur système définit le paramètre CURLIB sur le profil utilisateur que vous utilisez, quel que soit l'endroit où vous voulez placer les nouveaux fichiers.

Ensuite, sauvegardez-le et réessayez. Malheureusement, vous devrez soit avoir des sources de données différentes, soit changer la connexion ODBC lorsque vous passerez d'un test à l'autre, à la production et à tout ce que vous avez.

+0

Essayé et recvd un 'SQL0204 - cmpgrid2 dans le type webaccess * FICHIER non trouvé' où webaccess est le nom d'utilisateur Y at-il autre chose à essayer? –

+0

Bon, il y a encore quelques changements à faire. J'ai mis à jour ma réponse en conséquence. –

+1

Aussi vous voudrez tester intensivement votre application pour vous assurer que les changements ci-dessus ne cassent pas d'autres choses. La convention de dénomination de système utilise une barre oblique (/) lors de la résolution de la bibliothèque et du nom de fichier au lieu de la période (.) Normalement utilisée par SQL. –