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 :

Problème de détection de doublons


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut Problème de détection de doublons
    Bonjour à tous,

    Cela fait deux jours que je cherche une requête pour détecter des doublons dans ces tables:

    TN_DOCUMENTATION
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    TABLE TN_DOCUMENTATION
    (
      OBJECT_ID              NUMBER(10),
      CLASS_ID               NUMBER(5),
      CN_ID                  VARCHAR2(50 BYTE),
      REVISION               VARCHAR2(10 BYTE),
      STATE                  NUMBER(10),
      CREATION_DATE          DATE,
      CN_DESCRIPTION         VARCHAR2(255 BYTE),
      PHASE                  NUMBER(10),
      PAR_REVISION           VARCHAR2(10 BYTE),
      APPROVAL_DATE          DATE,
      EFFECTIVE_FROM         DATE,
      EFFECTIVE_UNTIL        DATE,
      UNDER_OPERATION        NUMBER(5),
      USER_OBJECT_ID         NUMBER(10),
      REVISION_STG           NUMBER(10),
      USER_ID_MOD            NUMBER(10),
      MODIFICATION_DATE      DATE,
      TDM_ORG_USER_ID        NUMBER(10),
      TDM_APPROVED_BY        NUMBER(10),
      TDM_ORG_CREATEDATE     DATE,
      CN_COMMENT             CLOB,
      CN_SERVICE             NUMBER(10),
      CN_DEPARTEMENT         NUMBER(10),
      CN_TYPE_DOCUMENT       NUMBER(10),
      CN_CALIBRE             VARCHAR2(5 BYTE),
      CN_CLES                VARCHAR2(250 BYTE),
      CN_CTRL_ACCES          NUMBER(10),
      CN_CLIENT              NUMBER(10),
      CN_NOM_AVANT_PROJET    VARCHAR2(20 BYTE),
      CN_REF                 VARCHAR2(20 BYTE),
      CN_ECHANGE_INFOS       VARCHAR2(120 BYTE),
      CN_DATE_DU_TRANSFERT   DATE,
      CN_ORDRE_TRANSFERT     NUMBER(10),
      CN_SITE_ISA            NUMBER(10),
      CN_COMPTEUR_DOCUMENTS  VARCHAR2(20 BYTE),
      CN_FEAT_ID             VARCHAR2(127 BYTE),
      TDM_SUPPORTED_CLB      NUMBER(10)
    )
    TN_CATIA_PART
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    TABLE TN_CATIA_PART
    (
      OBJECT_ID                NUMBER(10), FK DE TN_DOCUMENTATION
      CN_PART_NUMBER           VARCHAR2(28 BYTE),
      CN_NUM_PLAN       NUMBER(10),
      CN_CODE_PROJET           NUMBER(10),
      CN_CODE_SOUS_PROJET      VARCHAR2(4 BYTE),
      CN_TITLE                 VARCHAR2(255 BYTE),
      CN_CONFIGURATION         VARCHAR2(40 BYTE),
      CN_PAGE_SIZE             NUMBER(10),
      CN_SCALE                 VARCHAR2(20 BYTE),
      CN_UM                    VARCHAR2(20 BYTE),
      CN_DEFINITION            VARCHAR2(50 BYTE),
      CN_NOMENCLATURE          VARCHAR2(120 BYTE),
      CN_DESCRIPTIONREF        VARCHAR2(65 BYTE),
      CN_SOURCE                VARCHAR2(20 BYTE),
      CN_MATERIAL              VARCHAR2(32 BYTE),
      CN_TYPE_DE_DOCUMENT      VARCHAR2(20 BYTE),
      CN_NORME                 VARCHAR2(20 BYTE),
      FILE_TYPE                NUMBER(10),
      FILE_NAME                VARCHAR2(255 BYTE),
      DIRECTORY                VARCHAR2(255 BYTE),
      CAD_REF_FILE_NAME        VARCHAR2(255 BYTE),
      CAD_REF_DIRECTORY        VARCHAR2(255 BYTE),
      VAULT_OBJECT_ID          NUMBER(10),
      TDM_CAD_DIRTYFLAG        NUMBER(10),
      CN_MASS                  VARCHAR2(50 BYTE),
      CN_VOLUME                VARCHAR2(50 BYTE),
      CN_SURFACE               VARCHAR2(50 BYTE),
      CN_MATIERE               VARCHAR2(100 BYTE),
      CN_CODE_PRODUIT          VARCHAR2(5 BYTE),
      CN_NUM_ISA               VARCHAR2(5 BYTE),
      CN_TYPE_PLAN             NUMBER(10),
      CN_MAT                   NUMBER(10),
      CN_STATUT_DOCUMENT       NUMBER(10),
      CN_INDICE_MANUEL         VARCHAR2(2 BYTE),
      CN_TYPE_DEFINITION       NUMBER(10),
     
    )
    Un doublon a ces caractéristiques:
    Le même CN_CALIBRE.
    Le même REVISION.
    Le même CN_DESCRIPTION.
    Le même USER_OBJECT_ID.
    Le même CN_NUM_ISA .

    Je pensais avec exist, mai je n'y arrive pas avec la jointure pour les CN_NUM_ISA.

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Je ne comprends pas vraiment ton souci.
    Si tu veux obtenir les lignes qui sont présentes dans tes deux tables, une jointure sur les 5 champs cités devrait suffire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select * from TN_CATIA_PART cat
    INNER JOIN TN_DOCUMENTATION doc
    ON cat.CN_CALIBRE = doc.CN_CALIBRE
    AND cat.REVISION = doc.REVISION
    AND cat.CN_DESCRIPTION = doc.CN_DESCRIPTION
    AND cat.USER_OBJECT_ID = doc.USER_OBJECT_ID
    AND cat.CN_NUM_ISA = doc.CN_NUM_ISA

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut merci
    Ce que je souhaite c'est obtenir les doublons de tn_documention:
    Le même tn_documention.CN_CALIBRE.
    Le même tn_documention.REVISION.
    Le même tn_documention.CN_DESCRIPTION.
    Le même tn_documention.USER_OBJECT_ID.
    Le même tn_CATIA_PART.CN_NUM_ISA .


    Voila ma requête pour vous montrer à quoi je pensais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT T1.OBJECT_ID, T1.CN_ID, T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION,T1.STATE,
    T1.CREATION_DATE,T11.CN_NUM_ISA 
    FROM SMARTEAM.TN_DOCUMENTATION T1, TN_CATIA_PART T11 
     
    WHERE T1.OBJECT_ID=T11.OBJECT_ID and 
     
    EXISTS (SELECT OBJECT_ID, CN_ID, CN_DESCRIPTION,USER_OBJECT_ID, CN_CALIBRE 
    FROM SMARTEAM.TN_DOCUMENTATION T2 
    WHERE T1.OBJECT_ID <> T2.OBJECT_ID AND T1.CN_ID <> T2.CN_ID AND
     T1.CN_CALIBRE = T2.CN_CALIBRE  AND T1.CLASS_ID = T2.CLASS_ID AND 
    T1.REVISION = T2.REVISION AND T1.CN_DESCRIPTION = 
    T2.CN_DESCRIPTION AND T1.USER_OBJECT_ID = T2.USER_OBJECT_ID)
    voici un exemple doublon

    OBJECT_ID | CN_ID | CN_CALIBRE | USER_OBJECT_ID | CN_DESCRIPTION | REVISION | STATE | CREATION_DATE CN_NUM_ISA
    25176 | ViPrt-002295 | PE ME | 12516 |. ISO . | 00.A | 1 | 01/09/2006 09:27:45 | 123

    24232 | ViPrt-002274 | PE ME | 12516 |. ISO .| 00.A | 1 | 31/08/2006 06:33:19 | 123

    Dites moi si je suis assez clair ou si je dois vous éclairer un peu plus.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Une requête de ce type devrait te renvoyer les doublons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA 
    FROM SMARTEAM.TN_DOCUMENTATION T1, TN_CATIA_PART T11 
    WHERE T1.OBJECT_ID=T11.OBJECT_ID 
    GROUP BY T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA
    HAVING COUNT(*) > 1
    Un petit lien en prime : http://oracle.developpez.com/faq/?page=3-1#doublons

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut merci
    merci mais je doit afficher

    OBJECT_ID | CN_ID | CN_CALIBRE | USER_OBJECT_ID | CN_DESCRIPTION | REVISION | STATE | CREATION_DATE| CN_NUM_ISA

    Lorsque j'ajoute object_id à ta requête cela ne me retourne rien.

    le résultat que je désire est le suivant:

    OBJECT_ID | CN_ID | CN_CALIBRE | USER_OBJECT_ID | CN_DESCRIPTION | REVISION | STATE | CREATION_DATE CN_NUM_ISA

    25176 | ViPrt-002295 | PE ME | 12516 |. ISO . | 00.A | 1 | 01/09/2006 09:27:45 | 123

    24232 | ViPrt-002274 | PE ME | 12516 |. ISO .| 00.A | 1 | 31/08/2006 06:33:19 | 123

    encore merci de votre participation

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    C'est normal que ça ne te retourne rien si tu ajoutes object_id, étant donné que l'info est différente sur les deux lignes.
    En fait, il faut joindre le résultat de cette requête avec ta table d'origine sur les cinq champs en question.

    Ce qui donne quelque chose de ce type :
    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
    SELECT T.OBJECT_ID, T.CN_ID, T.CN_CALIBRE, T.USER_OBJECT_ID, T.CN_DESCRIPTION, T.REVISION, T.STATE, T.CREATION_DATE, T.CN_NUM_ISA
    FROM SMARTEAM.TN_DOCUMENTATION T
    INNER JOIN
    (
    SELECT T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA 
    FROM SMARTEAM.TN_DOCUMENTATION T1, TN_CATIA_PART T11 
    WHERE T1.OBJECT_ID=T11.OBJECT_ID 
    GROUP BY T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA
    HAVING COUNT(*) > 1 
    ) TT
    ON T.CN_CALIBRE = TT.CN_CALIBRE
    AND T.USER_OBJECT_ID = TT.USER_OBJECT_ID
    AND T.CN_DESCRIPTION = TT.CN_DESCRIPTION
    AND T.REVISION = TT.REVISION
    AND T.CN_NUM_ISA = TT.CN_NUM_ISA
    J'ai pas énormément de temps, donc je garantis pas que la requête fonctionne telle quel

    Edit : d'ailleurs après une brève vérif, le champs CN_NUM_ISA n'appartient pas à la table TN_DOCUMENTATION, donc enlève le du select dans un premier temps pour voir si tu obtiens ce que tu souhaites, puis ajoute ensuite une jointure sur l'autre table pour récupérer CN_NUM_ISA.

  7. #7
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Juste une idée: si tu es en sql server
    tu clique droit sur ta table --> toutes les taches --> gérer les index --> Nouveau
    et tu crées ton index avec les champs que tu veux empêcher de se répéter, puis après tu coches "valeurs uniques" et tu donnes un nom à l'index.
    Si il exsite déjà des valeurs dupliquées pour les champs choisis, tu auras un zoli message, sinon, c'est qu'il n'y a pas encore de doublons

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut merci
    je teste lundi et je vous redi
    je suis sous oracle 9
    encore merci

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    La jointure interne je connais très peu à vrai dire j'ai pas très bien compris son fonctionnement, comment faire pour intégrer les CN_NUM_ISA

    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
     
    SELECT T.OBJECT_ID, T.CN_ID, T.CN_CALIBRE, T.USER_OBJECT_ID, T.CN_DESCRIPTION, T.REVISION, T.STATE, T.CREATION_DATE, T2.CN_NUM_ISA
    FROM SMARTEAM.TN_DOCUMENTATION T , TN_CATIA_PART T2 WHERE T.OBJECT_ID=T2.OBJECT_ID 
    INNER JOIN
    (
    SELECT T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA 
    FROM SMARTEAM.TN_DOCUMENTATION T1, TN_CATIA_PART T11 
    WHERE T1.OBJECT_ID=T11.OBJECT_ID 
    GROUP BY T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA
    HAVING COUNT(*) > 1 
    ) TT
    ON T.CN_CALIBRE = TT.CN_CALIBRE
    AND T.USER_OBJECT_ID = TT.USER_OBJECT_ID
    AND T.CN_DESCRIPTION = TT.CN_DESCRIPTION
    AND T.REVISION = TT.REVISION
    Si quelqu'un peu à nouveau m'aider sa serait sympa.

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Peut être comme ça :
    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
    SELECT r1.OBJECT_ID, r1.CN_ID, r1.CN_CALIBRE, r1.USER_OBJECT_ID, r1.CN_DESCRIPTION, r1.REVISION, r1.STATE, r1.CREATION_DATE, cat.CN_NUM_ISA 
    FROM
    (SELECT T.OBJECT_ID, T.CN_ID, T.CN_CALIBRE, T.USER_OBJECT_ID, T.CN_DESCRIPTION, T.REVISION, T.STATE, T.CREATION_DATE, T.CN_NUM_ISA
    FROM SMARTEAM.TN_DOCUMENTATION T
    INNER JOIN
    (
    SELECT T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA 
    FROM SMARTEAM.TN_DOCUMENTATION T1, TN_CATIA_PART T11 
    WHERE T1.OBJECT_ID=T11.OBJECT_ID 
    GROUP BY T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA
    HAVING COUNT(*) > 1 
    ) TT
    ON T.CN_CALIBRE = TT.CN_CALIBRE
    AND T.USER_OBJECT_ID = TT.USER_OBJECT_ID
    AND T.CN_DESCRIPTION = TT.CN_DESCRIPTION
    AND T.REVISION = TT.REVISION
    AND T.CN_NUM_ISA = TT.CN_NUM_ISA) r1
    INNER JOIN TN_CATIA_PART cat
    ON cat.OBJECT_ID = r1.OBJECT_ID

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Y a toujours le même soucis c'est pour afficher le CN_NUM_ISA qui se trouve dans TN_CATIA_PART.



    @ bien galère la recherche de doublons...........

  12. #12
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    Salut, as tu été voir ce lien, et si tu arrives pas avec une requête sql vu la complexité de celle-ci, essai donc dans une proc plsql.

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    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
    SELECT r1.OBJECT_ID, r1.CN_ID, r1.CN_CALIBRE, r1.USER_OBJECT_ID, r1.CN_DESCRIPTION, r1.REVISION, r1.STATE, r1.CREATION_DATE, cat.CN_NUM_ISA 
    FROM
    (SELECT T.OBJECT_ID, T.CN_ID, T.CN_CALIBRE, T.USER_OBJECT_ID, T.CN_DESCRIPTION, T.REVISION, T.STATE, T.CREATION_DATE
    FROM SMARTEAM.TN_DOCUMENTATION T
    INNER JOIN
    (
    SELECT T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA 
    FROM SMARTEAM.TN_DOCUMENTATION T1, TN_CATIA_PART T11 
    WHERE T1.OBJECT_ID=T11.OBJECT_ID 
    GROUP BY T1.CN_CALIBRE,T1.USER_OBJECT_ID, T1.CN_DESCRIPTION,T1.REVISION, T11.CN_NUM_ISA
    HAVING COUNT(*) > 1 
    ) TT
    ON T.CN_CALIBRE = TT.CN_CALIBRE
    AND T.USER_OBJECT_ID = TT.USER_OBJECT_ID
    AND T.CN_DESCRIPTION = TT.CN_DESCRIPTION
    AND T.REVISION = TT.REVISION) r1
    INNER JOIN TN_CATIA_PART cat
    ON cat.OBJECT_ID = r1.OBJECT_ID
    Pas évident sans les tables et des données de test.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Le problème pour PL/SQL c'est une base ou nous n'avons que le droit de consultation, c'est pour sa que je cherche la requête magique .

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Et il te dit quoi sur la dernière requête que je t'ai postée?
    J'ai ni table ni données, savoir où se situe le problème peut aider.

  16. #16
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    je suis tout à fait d'accord avec toi Snipah, c'est pour cela que je ne m'attaque pas à ça.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Pour la dernière requête semble juste

    Je suis désolé pour les données la plus par sont confidentielles
    Merci beaucoup à charge de revanche.

    billoux

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 54
    Points : 36
    Points
    36
    Par défaut nouvelle requete
    Bonjour à tous
    Bien que vous m'ayez pas mal aider à débroussailler lors de ma recherche de doublons précédente j'ai une nouvelle requête à faire sur cette base et je galère à nouveau. J'en appelle encore à votre générosité. Alors voila ce coup si c'est un autre type de doublons:
    tn_catia_part c, tn_documentation tt

    object_id différend
    même
    - c.cn_num_plan,
    - c.cn_code_projet
    - c.cn_code_sous_projet,
    - tt.revision
    soit:
    object_id | cn_num_plan | c.cn_code_projet | c.cn_code_sous_projet | tt.revision
    1111111 | 100 | 1 | 40104 | 00.a
    2222222 | 100 | 1 | 40104 | 00.a
    je pensais à sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT   c.cn_num_plan,
                     c.cn_code_projet , c.cn_code_sous_projet,
                     tt.revision
                FROM tn_catia_drawing c, tn_documentation tt
               WHERE c.object_id = tt.object_id
            GROUP BY c.cn_num_plan,
                     c.cn_code_projet,
                     c.cn_code_sous_projet,
                     tt.revision
              HAVING COUNT (*) >1
    mais bien sur sa ne m'affiche pas tous les doublons (par exemple si il y'en a 3 je n'ai qu'une ligne) j'ai essayé de réadapter la précédente requête mais sans succès.

    j'en appelle une nouvelle fois à votre aide si quelqu'un a une ou des idées elle sont les bienvenues.

    merci

  19. #19
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Votre requête est correcte, il suffit maintenant de faire une jointure entre ce résultat et vos données, utilisez votre select comme élément du from et faites la jointure.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 77
    Points : 84
    Points
    84
    Par défaut
    La requête est en effet bonne. Vu le group by, il est normal qu'il ne renvoie qu'une seule fois les combinaisons. En fait, Oracle renvoie une seule fois les combinaisons qui apparaissent plusieurs fois dans la table.

    Tu dois maintenant faire un select ressemblant à ceci:
    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
     
    select ...
    from tn_catia_drawing t1,
           tn_documentation t2,
         (SELECT   c.cn_num_plan,
                     c.cn_code_projet , c.cn_code_sous_projet,
                     tt.revision
                FROM tn_catia_drawing c, tn_documentation tt
               WHERE c.object_id = tt.object_id
            GROUP BY c.cn_num_plan,
                     c.cn_code_projet,
                     c.cn_code_sous_projet,
                     tt.revision
              HAVING COUNT (*) >1) table3
    where t1.object_id = t2.object_id
       and t1.object_id = table3.object_id
       and t1.cn_num_plan = table3.cn_num_plan
       and t1.cn_code_projet = table3.cn_code_projet 
       and t1.cn_code_sous_projet = table3.cn_code_sous_projet
       and t2.revision = table3.revision

Discussions similaires

  1. [UBUNTU] Problème de détection souris/clavier
    Par Merlin dans le forum Ubuntu
    Réponses: 4
    Dernier message: 19/04/2006, 19h23
  2. D7/firebird 1.5 - détection de doublons
    Par jer64 dans le forum Bases de données
    Réponses: 12
    Dernier message: 30/03/2006, 21h35
  3. Problème de gestion de doublons
    Par EJ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2006, 19h35
  4. [FAQ]problème de détection réseau.
    Par mickael777 dans le forum MFC
    Réponses: 6
    Dernier message: 13/05/2005, 14h43
  5. Problème de détection de nouveau processeur
    Par zakfa dans le forum Composants
    Réponses: 12
    Dernier message: 24/01/2005, 17h09

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