IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DB2 Discussion :

DB2 LUW jointure externe avec "des lignes"


Sujet :

DB2

  1. #1
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut DB2 LUW jointure externe avec "des lignes"
    Hello les gens,
    J'aurais besoin de faire une jointure extrene avec le résultat de l'execution d'une requête. Cette requête est elle même paramétrable, et je n'ai pas réussi jusqu'ici à en intégrer les résultats en jointure externe.
    Je ne vois donc que deux solutions:
    1- Création d'une vue paramétrable (à priori impossible sur oracle et encore moins sur DB2)
    2- Création d'une procédure stockée qui retourne une "table"
    Suis-je dans le bon ? Si quelqu'un à sous le coude la syntaxe pour la création de ce type de procédure stockée je prend volontier.
    Merci pour toutes vos contributions.

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 139
    Points : 109
    Points
    109
    Par défaut
    utilise une MQT (vue matérialisée dans Oracle)
    elle ne sera pas en refresh immédiat s'il y a des paramètres dans la requête
    mais tu dois la rafraichir manuellement avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    refresh table .. not incremental

  3. #3
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    Merci d'avoir répondu aussi vite.
    Le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    refresh TABLE .. NOT incremental
    doit être dans le script de création de la MQT ?
    Je n'arrive en fait pas à faire passer la requête avec la jointure externe parceque ma clause "on" porte sur une sous requête ou est un fullselect en tout cas je me prend un SQL0338N.
    Ma requête comptète ressemble à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select ... from table1,
    left outer join CAG_SECBASIS cag
    		 on ( cag.champ1=table1.champ1
    		 and cag.EVENTID in (select camaster.EVENTID from CAG_CAMASTER camaster where camaster.EVENTSTATUS= 'CPTD' and month(camaster.EXECUTIONDATE)=09--ça c'est un paramètre si je passe par la solution MQT
    and year(camaster.EXECUTIONDATE)=2010--ça c'est un paramètre si je passe par la solution MQT
    )
    ,table2
    where ...
    order by...
    J'ai trouvé ça mais il n'y a pas la trace de création avec une requête comportant des paramètres. Par ailleurs si le "REFRESH" doit être fait manuellement sur de l'SQL PL cela ne m'arrange pas du tout vu que la requête est destinée à alimenter un report.

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 139
    Points : 109
    Points
    109
    Par défaut
    Citation Envoyé par jadey Voir le message
    Le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    refresh TABLE .. NOT incremental
    doit être dans le script de création de la MQT ?
    Non !
    la MQT doit indiquer REFRESH DEFERRED
    mais il se peut que tu sois obligé de faire MAINTAINED BY USER et non BY SYSTEM
    faut essayer

    Je n'arrive en fait pas à faire passer la requête avec la jointure externe parceque ma clause "on" porte sur une sous requête ou est un fullselect en tout cas je me prend un SQL0338N.

    t'es dans quelle version ?
    il me semble que ce problème ait été résolu avec 8.1 fixpak 7

  5. #5
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    c'est une 9.5

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 139
    Points : 109
    Points
    109
    Par défaut
    pour le SQL0338N

    - The ON clause cannot include any subqueries.

    réécris le requête ! ça doit être possible sans mettre le résultat de la sous-requête dans une table temporaire

Discussions similaires

  1. Réponses: 22
    Dernier message: 21/01/2011, 22h15
  2. Pb de jointure externe avec un number
    Par mch_27 dans le forum Oracle
    Réponses: 2
    Dernier message: 07/03/2006, 15h33
  3. [SQL] jointure externe avec 3 tables, comment faire ....
    Par grumbok dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2005, 16h13
  4. jointure externe avec un where, me pose problème!
    Par Danae dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/07/2005, 17h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo