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 :

ne pas afficher les doublons


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 16
    Points
    16
    Par défaut ne pas afficher les doublons
    Bonjour, je suis tout nouveau, et tres novice sous SQL.
    J'utilise SQLview pour exporter des données dans une base oracle.
    je ne dois utiliser que des affichages comme select, from, where ect... pour éviter de détruire la base.

    Je voudrais effectuer un tri en effacant des doublons dans ma requete.
    Exemple : Je veux garder l'opération qui reste a venir et ne pas afficher la suite ( ligne en rouge a garder , ligne en noir ne pas afficher)

    N° OF opérations articles temps
    109455 10 RABOTEUSE 2,3
    109455 20 RABOTEUSE 5
    109455 30 RABOTEUSE 4,7
    109455 40 RABOTEUSE 9,1
    109455 50 RABOTEUSE 0
    109455 60 RABOTEUSE 9
    300871 30 PERCEUSE 8,3
    300871 40 PERCEUSE 5,9
    300871 50 PERCEUSE 5,8

    je sais pas si vous avez compris la question, c'est pas évident pour moi, c'est ma premiere
    Merci d'avance pour les réponses

  2. #2
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 171
    Points
    171
    Par défaut
    Bonjour,

    J'essaierai quelque chose comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select O.no_of, O.operations, O.article, O.temps
    from operations O
    inner join 
    (select no_of, min(operations) operations
     from operations
     group by no_of) O2 
    on O2.no_of = O.no_of and O2.operations = O.operations
    cdt

  3. #3
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    On peut faire plus simple avec les fonctions analytiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT no_of, operations, article, temps
      FROM (SELECT no_of, operations, article, temps,
                ROW_NUMBER () OVER (PARTITION BY no_of ORDER BY operations ASC) nb
              FROM operations)
     WHERE nb = 1

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 16
    Points
    16
    Par défaut
    J'ai essayé, ca marche pas , mais je pense pas mettre une seconde requete après mon "from" car j'ai déja les destination des tables, voici ci-dessous ma requete

    SELECT
    B.T$PDNO AS N_OF,B.T$OPNO AS OPERATION,A.T$MITM AS ARTICLES,B.T$PRTM AS TEMPS (champs)

    FROM TTISFC001420 A, TTISFC011420 B (tables)

    WHERE
    B.T$PDNO = A.T$PDNO
    AND A.T$MITM Not Like 'H%'
    AND A.T$MITM NOT LIKE 'Z%'
    ORDER BY B.T$PDNO,B.T$OPNO (conditions)

    qu'en pensés vous ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 45
    Points
    45
    Par défaut
    tu pourrais ajouter apres ton where la condition suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    B.T$PDNO IN (select DISTINCT T$PDNO from TTISFC001420)
    si j'ai bien compris ta question

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    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
    19
    20
    21
    22
    23
    24
    25
    26
     
    /* data sample */
    with t as ( 
    select 109455 no, 10 operation, 'RABOTEUSE' article, 2.3 temps from dual union all
    select 109455, 20, 'RABOTEUSE', 5 from dual union all
    select 109455, 30, 'RABOTEUSE', 4.7 from dual union all
    select 109455, 40, 'RABOTEUSE', 9.1 from dual union all
    select 109455, 50, 'RABOTEUSE', 0 from dual union all
    select 109455, 60, 'RABOTEUSE', 9 from dual union all
    select 300871, 30, 'PERCEUSE', 8.3 from dual union all
    select 300871, 40, 'PERCEUSE', 5.9 from dual union all
    select 300871, 50, 'PERCEUSE', 5.8 from dual 
    )
    /* start of query */
    select 
      no, 
      min(operation) operation, 
      min(article) keep (dense_rank first order by operation) article, 
      min(temps) keep (dense_rank first order by operation) temps
    from t
    group by no
    ;
            NO  OPERATION ARTICLE        TEMPS
    ---------- ---------- --------- ----------
        109455         10 RABOTEUSE        2.3
        300871         30 PERCEUSE         8.3

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 45
    Points
    45
    Par défaut
    et une autre condition parce que tu choisis apparemment le plus petit dans la colonne operations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND B.T$OPNO=(select min(w.T$OPNO) from TTISFC001420 w where w.T$PDNO=B.T$PDNO)
    bon courage

  8. #8
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    > Damiano84 : Non, c'est comme si tu dis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select 1 from dual where 1 in (select 1 from dual)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  9. #9
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    j'ai supposé que tu triais par operation. Une réponse plus générique serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select 
      no, 
      min(operation) keep (dense_rank first order by rownum) operation, 
      min(article) keep (dense_rank first order by rownum) article, 
      min(temps) keep (dense_rank first order by rownum) temps
    from t
    group by no
    ;
    tu peux trier comme tu veux, il faut juste trier par quelque chose d'unique

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 16
    Points
    16
    Par défaut
    oui , je ne veux afficher que la première opération par OF, et ne pas afficher les suivantes sachant que ce sera toujours des opérations incrémenté.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 53
    Points : 45
    Points
    45
    Par défaut
    merci McM pour la remarque

  12. #12
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 190
    Points : 103
    Points
    103
    Par défaut
    pour quoi à chaque fois que j'execute une requete avec whith ..as (..
    le resultat est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SQL> 
     
     
     
     
    SQL>

  13. #13
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    sans doute que tu as un trop vieux client.

    Essaye
    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
     
    select * from (
    /* data sample */
    WITH t AS ( 
    SELECT 109455 no, 10 operation, 'RABOTEUSE' article, 2.3 temps FROM dual union ALL
    SELECT 109455, 20, 'RABOTEUSE', 5 FROM dual union ALL
    SELECT 109455, 30, 'RABOTEUSE', 4.7 FROM dual union ALL
    SELECT 109455, 40, 'RABOTEUSE', 9.1 FROM dual union ALL
    SELECT 109455, 50, 'RABOTEUSE', 0 FROM dual union ALL
    SELECT 109455, 60, 'RABOTEUSE', 9 FROM dual union ALL
    SELECT 300871, 30, 'PERCEUSE', 8.3 FROM dual union ALL
    SELECT 300871, 40, 'PERCEUSE', 5.9 FROM dual union ALL
    SELECT 300871, 50, 'PERCEUSE', 5.8 FROM dual 
    )
    /* start of query */
    SELECT 
      no, 
      min(operation) operation, 
      min(article) keep (dense_rank first ORDER BY operation) article, 
      min(temps) keep (dense_rank first ORDER BY operation) temps
    FROM t
    GROUP BY no
    /* end of query */
    );

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 16
    Points
    16
    Par défaut
    merci pour le code, il fonctionne mais pas pour ma requete

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par damiano84
    tu pourrais ajouter apres ton where la condition suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    B.T$PDNO IN (select DISTINCT T$PDNO from TTISFC001420)
    si j'ai bien compris ta question
    marche pas , désolé

  16. #16
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Oui c'est ce que j'avais dit plus haut.
    Sinon, quelle est ta version de base de donnée ?

    Normalement le premier code devrait marcher (celui avec le inner join)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  17. #17
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par axamen
    merci pour le code, il fonctionne mais pas pour ma requete
    Et pourquoi pas? Je retourne bien les lignes rouges que tu as demandées, non?

    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
     
    SELECT
      B.T$PDNO AS N_OF,
      min(B.T$OPNO) AS OPERATION,
      min(A.T$MITM) keep (dense_rank first order by T$OPNO) AS ARTICLES,
      min(B.T$PRTM) keep (dense_rank first order by T$OPNO) AS TEMPS 
    FROM 
      TTISFC001420 A, 
      TTISFC011420 B 
    WHERE
      B.T$PDNO = A.T$PDNO
      AND A.T$MITM Not Like 'H%'
      AND A.T$MITM NOT LIKE 'Z%'
    group by 
      B.T$PDNO
    ORDER BY
      1

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 16
    Points
    16
    Par défaut
    C'est bon, ca marche , normal, j'avais plus de réseau donc plus connecté de la base.

    Merci encore a tous, a bientot
    PS: j'envoi une autre question dans l'après midi

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

Discussions similaires

  1. Ne pas afficher les doublons
    Par steph1014 dans le forum Outils
    Réponses: 6
    Dernier message: 21/04/2010, 16h43
  2. Ne pas afficher les doublons dans mon rapport
    Par shallum dans le forum Jasper
    Réponses: 6
    Dernier message: 06/01/2010, 17h10
  3. Réponses: 2
    Dernier message: 21/04/2009, 21h10
  4. ne pas afficher les doublons
    Par zangel dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 05/10/2008, 18h06
  5. Réponses: 6
    Dernier message: 25/04/2008, 12h44

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