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 :

[IBM i] - [V6R1] - Comparaison entre-elles de plusieurs colonnes d'un enregistrement


Sujet :

DB2

  1. #1
    Membre actif
    Homme Profil pro
    Architecte technique & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique & logiciel IBM i
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2010
    Messages : 179
    Points : 275
    Points
    275
    Par défaut [IBM i] - [V6R1] - Comparaison entre-elles de plusieurs colonnes d'un enregistrement
    Bonjour.

    J'ai une table composée des colonnes :
    • Clé unique (USRPRF)
    • Code environnement d'une partition 1 (A1Env)
    • Code environnement d'une partition 2 (A2Env)
    • Code environnement d'une partition 3 (A3Env)...

    Ce sont des données consolidées depuis plusieurs partitions i : c'est un inventaire des *USRPRF sur chacune des partitions avec, pour chacun d'eux, l'environnement applicatif auquel il accède s'il est déclaré sur la partition. Le profil n'est pas forcément déclaré sur toutes les partitions (dans ce cas, la colonne de la partition est nulle).

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    USRPRF  A1ENV   A2ENV   A3ENV
    PRF1	-	ENV1	-	
    PRF2	ENV2	-	ENV2	
    PRF3	ENV1	-	ENV2	
    PRF4	ENV1	ENV2	ENV1
    • Le *USRPRF PRF1 accède à l'environnement ENV1 sur la partition 2 et n'est pas déclaré sur les autres partitions.
    • Le *USRPRF PRF2 accède à l'environnement ENV2 sur la partition 1 et la partition 3 et n'est pas déclaré sur la partition 2

    Je cherche à déterminer les *USRPRF qui accèdent à des environnements différents sur les partitions sur lesquelles ils sont déclarés : ceux-ci sont en anomalie. Dans mon exemple, seul le PRF2 est bon, car il accède au même environnement (ENV2) sur les deux partitions où il est déclaré. Les 3 autres sont en anomalie.

    Dans ma véritable table, ce ne sont pas 3 mais 7 partitions (donc 7 colonnes) dont je dispose. Je ne sais pas comment m'y prendre pour faire cette requête afin de déterminer mes profils en anomalies.

    Merci par avance pour vos réponses.

  2. #2
    Membre actif
    Homme Profil pro
    Architecte technique & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique & logiciel IBM i
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2010
    Messages : 179
    Points : 275
    Points
    275
    Par défaut
    Bien, j'ai la réponse fournie par mon voisin de gauche : on remet les colonnes en lignes, puis on distingue. Cela donne cette requête qui teste les 7 colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    with
     
    -- On remet en ligne les environnements du USRPRF
    t1 as (
     select upper(usrprf) as usrprf, a1env as env from matable union
     select upper(usrprf) as usrprf, a2env as env from matable union
     select upper(usrprf) as usrprf, a3env as env from matable union
     select upper(usrprf) as usrprf, a4env as env from matable union
     select upper(usrprf) as usrprf, a5env as env from matable union
     select upper(usrprf) as usrprf, a12env as env from matable union
     select upper(usrprf) as usrprf, a13env as env from matable 
    ),
     
    -- On isole ceux avec plus d'un environnement
    t2 as (
     select usrprf, count(distinct env)
     from t1 
     where env is not null 
     group by usrprf 
     having count(distinct env) > 1
    )
     
    select * from matable where usrprf in (select usrprf from t2) order by usrprf ;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/04/2009, 21h22
  2. Réponses: 2
    Dernier message: 21/05/2008, 08h45
  3. [VBA-E]Problème de comparaison entre plusieurs colonnes
    Par JeanMikael dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 09/07/2007, 17h29
  4. Réponses: 1
    Dernier message: 26/03/2007, 01h20
  5. Plusieurs bases mappées et relations entre elles
    Par jmartell dans le forum Hibernate
    Réponses: 7
    Dernier message: 10/08/2006, 20h06

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