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 :

Récupérer le différentiel


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut Récupérer le différentiel
    Bonjour à tous,

    J'ai une table sur une base oracle ou je récupère la liste des serveurs avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct(server_name) from tableA
    Je récupère donc une liste de 789 serveurs.
    J'ai une autre table dans une autre base oracle et je voudrais savoir si j'ai bien tous ces serveurs.
    A l'aide de excel j'ai fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom_server from tableB where nom_server in (les 789 serveurs)
    J'obtiens 751 résultats. J'aimerais savoir comment connaitre le différentiel entre les 789 serveurs et les 750 résultats pour avoir le nom de ces serveurs?

    J'ai pas trouvé la solution. Faudrait que pour chaque serveur dans la condition in qui ne ramene pas de résultat, j'ai justement un indicateur...
    J'espère m'etre fait comprendre.

    Merci à tout le monde

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Très simplement !
    Il s'agit de récupérer tous les serveurs de tableB qui n'existent pas dans tableA, ça s'écrit exactement comme se conçoit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT b.nom_server 
      FROM tableB b
    WHERE NOT EXISTS (SELECT 1 FROM tableA a WHERE a.nom_server = b.nom_server)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Oui mais ce n'est pas possible, je me suis mal exprimé, mais les deux bases oracles sont sur deux serveurs différents et y a pas de flux entre les deux.
    Je peux interroger les deux de mon poste mais faire une jointure ne marchera pas.

    Je me demandais si c'était pas possible de créer une table virtuelle à l'aide d'une requete (et non physiquement avec un create table) et de cette table faire le NOT EXIST. Mais j'y suis pas arrivé...

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Si vous contrôlez bien les valeurs en entrée (et qu'il n'y a pas de NULL), faites un NOT IN :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT nom_server FROM tableB WHERE nom_server NOT IN (les 789 serveurs)
    Il n'y a pas moyen d'avoir un DBLink entre ces deux serveurs ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Malheureusement non y a pas moyen car faut d'abord demander une ouverture de flux entre les deux machines et ca prend 1 mois ici

    Merci pour la réponse

    Cela dit je suis toujours curieux de savoir comment créer une table temporaire avec des valeurs et faire un select dessus mais sans passer par la vraie creation de table. Avec un select et un with TableTemp as ...
    Quelque chose dans le style ca doit surement exister...

    Mais c'est bon j'ai ma réponse pour ma première demande, merci!

  6. #6
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Sous Oracle, pour émuler avec WITH une table :


    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
     
    WITH TableTemp AS 
    (
    SELECT 1 AS id, 'Serv1' AS Nom_Server FROM DUAL 
    -- Histoire de faire comme une vraie table, bien sûr il faut mettre ce dont on a besoin
    UNION ALL
    SELECT 2 AS id, 'Serv2' AS Nom_Server FROM DUAL
    UNION ALL
    SELECT 3 AS id, 'Serv3' AS Nom_Server FROM DUAL
    UNION ALL
    SELECT 4 AS id, 'Serv4' AS Nom_Server FROM DUAL
    -- etc.
    )
    SELECT b.nom_server 
      FROM tableB b
    WHERE NOT EXISTS (SELECT 1 FROM TableTemp a WHERE a.nom_server = b.nom_server)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Hoo Merci Rei Ichido, c'est exactement ce que je cherchais!!

    Merci beaucoup!

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

Discussions similaires

  1. Récupérer de manière différentielle les données de production
    Par nandy.c dans le forum Approche théorique du décisionnel
    Réponses: 20
    Dernier message: 22/05/2013, 10h37
  2. Récupérer différentiel de fichiers via URL
    Par shadeoner dans le forum Langage
    Réponses: 1
    Dernier message: 06/03/2008, 22h52
  3. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 03h35
  4. Réponses: 11
    Dernier message: 23/07/2002, 15h33
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 18h26

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