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

SQL Oracle Discussion :

Différences entre 2 tables [11gR2]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut Différences entre 2 tables
    je travaille sur deux bases (PROD et TEST) reliées par un DBlink. TEST est une copie de PROD .

    sur les 2 j' ai une table "utilisateur" où sont gerés les différents accès aux applications. avec la requête qui suit je voudrais selectionner

    tous les utilisateurs (sur prod) qui ont la ligne "RES" (accès à une application particulière) et ensuite à l'aide de ce resultat prendre les même qui n'auraient pas ce droit sur test.


    Effectuée sur TEST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    select * from utilisateur where not exists
         (select * from utilisateur@prod where grp like 'RES%');
    cette requête ne me retourne aucune ligne pourtant je trouve bien sur Test des utilisateurs sans la ligne Rest.

    lorsque je fais par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select count(*) from utilisateur where grp like 'REST%'
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select count(*) from utilisateur@prod where grp like 'REST%'
    j' ai une große difference. ce qui veut dire que tous ceux qui ont accès en PROD à cette appplication, n'y ont pas forcément accès en TEST.

    besoin d' aide SVP

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Il manque une jointure dans votre requête NOT EXISTS
    Vu qu'il n'y a aucun lien entre vos deux requêtes, dès lors où un utilisateur à accès à RES alors la requête ne retournera jamais rien

    Lorsque vous écrivez une clause [NOT] EXISTS, commencez toujours par faire la jointure, puis mettre les clauses de sélection, ça vous évitera des oublis et des frayeurs


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select * 
    from utilisateur U
    where not exists
         (select * 
         from utilisateur@prod
         where U.Util_ID = Util_ID
         and grp like 'RES%'
         );

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut
    Merci Scriuiw pour ta réponse.

    celle là aussi avec la Jointure je l' avais déjà essayée sans satisfaction. Le résultat me donne des utilisateurs qui dans les 2 bases n' ont pas de droits d'accès à l'application.

    Car je ne cherche que ceux qui y ont accès en prod et pas en Test. Afin de mettre les 2 tables aux même niveau.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Si je comprends bien la recherche, c'est les utilisateurs en DEV qui n'ont pas le groupe RES mais qui existe en PROD avec le groupe RES ?
    Plutôt quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select * 
      from utilisateur u
     where u.grp not like 'RES%'
       and exists (select 1
                     from utilisateur@prod p
                    where p.Util_ID = u.Util_ID
                      and p.grp like 'RES%'
                  );

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut
    skuatamad bonjour
    celle là aussi ne fonctionne pas car un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /*test en DEV*/
    select * from utilisateur where grp like 'RES%'
    and nom_util = 'resultat1'
    me montre que cet utilisateur a les droits d' accès à l' application en DEV

    de même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /*test en PROD*/
    select * from utilisateur@prod where grp like 'RES%'
    and nom_util = 'resultat1'

    cette requête ne fait rien d' autre que me donner ceux qui de toutes les facons ont accès à l' application dans les 2 Environements. En occultant tout simplement les lignes 'RES' dans le résultat.

    De même j' ai déjà essayé la requête avec comme condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     having (grp  not like 'RES%'  )
    . Sans succès

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    C'est quoi le test pour savoir si un utilisateur à l'accès à l'application, les filtres changent à chaque poste ?

    Sinon ma requête fait :
    select les utilisateurs en dev
    QUI n'ont pas accès à l'application en dev
    ET QUI ont accès à l'application en prod

    Mais je ne sais pas si ça répond au besoin.

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

Discussions similaires

  1. Différence entre deux tables
    Par fabricedallara dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 24/05/2012, 14h31
  2. Différence entre deux tables
    Par szoubir dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 24/07/2007, 18h41
  3. Différences entre delete table et delete from table
    Par pegase06 dans le forum Administration
    Réponses: 3
    Dernier message: 16/02/2007, 15h25
  4. faire une différence entre deux tables
    Par geay dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/09/2006, 15h33
  5. [9iR2] Différence entre une table et une table objet ?
    Par mainecoon dans le forum Oracle
    Réponses: 1
    Dernier message: 16/02/2006, 04h28

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