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 :

Anomalie sur comparaison de tables / Delta incohérent [11g]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Par défaut Anomalie sur comparaison de tables / Delta incohérent
    Bonjour à tous,

    Je sèche depuis quelques heures sur une comparaison entre deux tables, une archive et une prod. je cherche simplement à récupérer le delta entre la prod et l'archive. Donc :

    SELECT * FROM table_prod; --> 780 000
    SELECT * FROM table_archive --> 740 000
    SELECT DISTINCT username FROM table_prod; --> 780 000
    SELECT DISTINCT username FROM table_archive --> 740 000

    Je m'attends donc à un delta de 40 000.

    Ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(*) from table_prod tp
    where username not in
    (select ta.username from table_archive ta);
    --> 760 000 !

    Il n'y a donc que 20 000 enregistrements à matcher entre les deux tables.
    Les schémas sont identiques, la seule différence est la version de base : 10G d'un côté, 11G d'un autre.

    Quelqu'un aurait-il une piste sur ce problème ?

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Par défaut
    Nah, 40 000, c'est pas ça.

    Dans votre panier en revenant du marché, vous avez 780 000 légumes dans le panier prod, et 720 000 dans le panier archive.

    Votre requete vous donne le nombre de légumes dans le panier prod qui ne sont pas dans le panier archive: 760 000.
    Mais a aucun moment il est dit que tous les légumes du panier archive sont contenus dans le panier prod.

    AMHA vous trouverez 720 000 en regardant les users dans archives qui ne sont pas dans prod.

    Le nombre total d'enregistrements ça n'a pas de rapport avec le nombre d'enregistrements qu'il y aura en commun. Essayez donc avec différentes valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    create table tmp as select level as username from dual connect by level<100;
    create table tmp2 as select level+&delta_user_decalage as username from dual connect by level<120;
     
    select 'prod not in archive', count(*) from (
      select username from tmp
         minus
      select username from tmp2)
    union all
    select 'archive not in prod', count(*) from (
      select username from tmp2
         minus
      select username from tmp)
    ;

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Par défaut
    C'est tout à fait exact.
    La méconnaissance de l'environnement m'a complètement trompé.

    Merci pour la leçon

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

Discussions similaires

  1. Comparaison sur une meme table mysql
    Par arteka dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/10/2012, 13h05
  2. comparaison valeurs colonne sur une même table
    Par nsylvain10 dans le forum Requêtes
    Réponses: 8
    Dernier message: 25/08/2011, 15h42
  3. Écriture d'une fonction sur comparaison de 3 tables identiques
    Par dauphine2010 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/06/2010, 12h11
  4. Réponses: 12
    Dernier message: 12/12/2004, 14h25
  5. question sur les requetes table héritée
    Par champion dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 30/08/2004, 14h19

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