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

Langage SQL Discussion :

Identifier doublons relatifs avec une seule table


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2013
    Messages : 155
    Points : 36
    Points
    36
    Par défaut Identifier doublons relatifs avec une seule table
    Bonjour,

    Je souhaite actuellement identifier les doublons d'une même table.
    Ma table est constituée de cette façon:

    ID MARQUE MODELE CONCATENE REMPLACE
    1 XXX 123 XXX123 oui
    2 XXX 123 XXX123 non
    3 XXY 124 XXY124 non

    Grâce au code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT   COUNT(*) AS nbr_doublon, marque, modele, concatene
    FROM     p_actuel
    GROUP BY marque, modele, concatene
    HAVING   COUNT(*) > 1
    J'arrive à connaitre les concaténés en double et le nombre de fois où ils sont en double.

    Cependant, j'aimerais conserver des colonnes comme ID ou REMPLACE pour pouvoir faire un choix.

    Que faut-il rajouter à mon code pour pouvoir identifier réellement chaque doublons par son ID?

    Merci d'avance

    Cordialement, idate.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 878
    Points
    12 878
    Par défaut
    Bonjour,
    Il suffit de faire un jointure de la table sur elle-même:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM p_actuel p1
    inner join p2 on p1.marque = p2.marque and  p1.modele = p2.modele and p1.concatene = p2.concatene and p1.id < p2.id
    order by

    Tatayo.

  3. #3
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    Refaire jointure avec ta table intiale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT dbl.*, p.id 
    FROM p_actuel p 
      JOIN (
    SELECT   COUNT(*) AS nbr_doublon, marque, modele, concatene
    FROM     p_actuel
    GROUP BY marque, modele, concatene
    HAVING   COUNT(*) > 1) dbl ON p.marque = dbl.marque AND p.modele = dbl.modele, p.concatene = dbl.concatene
    Si ton SGBD (lequel, au fait ?) implémente les fonction analytiques, tu peux écrire plus efficacement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM (
    SELECT p.*, count(*) over(partition by   marque, modele, concatene) cnt
    FROM p_actuel p 
    )
    WHERE cnt > 1

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2013
    Messages : 155
    Points : 36
    Points
    36
    Par défaut
    Merci beaucoup vous êtes les meilleurs

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

Discussions similaires

  1. B.D avec une seule table
    Par infose dans le forum Développement
    Réponses: 7
    Dernier message: 04/11/2010, 10h58
  2. [Doctrine] plusieurs many-to-many avec une seule table
    Par Lideln75 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/10/2010, 11h54
  3. [SSAS] Cube avec une seule table
    Par Safaritn dans le forum SSAS
    Réponses: 3
    Dernier message: 01/08/2008, 15h05
  4. Merge mais avec une seule table : possible?
    Par kissskoool dans le forum SQL
    Réponses: 10
    Dernier message: 10/03/2008, 13h53
  5. [FN]Faire 1 BD avec une seule table ou normaliser ?
    Par borndead dans le forum Schéma
    Réponses: 7
    Dernier message: 12/06/2007, 15h26

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