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

Requêtes MySQL Discussion :

Dédoublonnage d'une table en tenant compte d'une autre table


Sujet :

Requêtes MySQL

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Septembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Septembre 2018
    Messages : 3
    Par défaut Dédoublonnage d'une table en tenant compte d'une autre table
    Bonjour,
    J'ai un petit souci de dédoublonnage lorsque je veux exclure certains regroupements d'id connus.
    Je m'explique, imaginons que j'ai une table_user

    id_user email nom
    1 aaaa@mail.com tata
    4 aaaa@mail.com toto
    8 aaaa@mail.com tutu
    101 bbbb@mail.com bobo
    1012 aaaa@mail.com titi

    Donc pour dédoublonner cette table en utilisant l'email je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COUNT(DISTINCT id), email, GROUP_CONCAT( id ORDER BY id ) AS ids
    FROM table_user 
    GROUP BY email
    HAVING COUNT(DISTINCT id)>1;
    Ce qui retournerait un truc du genre :

    COUNT(DISTINCT id) email ids
    4 aaaa@mail.com 1,4,8,1012

    Ok mais ce que je souhaiterais c'est pouvoir exclure du rapprochement des éléments identifiés dans une autre table
    Exemple avec une table : user_no_doublon

    id users_no_doublon
    1 1.8
    2 1.1012

    En fait cette table permettrait d'indiquer que :
    - le user id 1 ne peut etre rapprocher avec le user id 8
    - le user id 1 ne peut etre rapprocher avec le user id 1012

    Et en arrivant à joindre ces exclusions à la première requete obtenir :

    COUNT(DISTINCT id) email ids
    2 aaaa@mail.com 1,4

    et les 2 users concernés seraient uniquement les users : 1 et 4

    Voila j'espère être assez clair, merci d'avance pour votre aide




    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
    CREATE TABLE IF NOT EXISTS `table_users` (
      `id` int(11) NOT NULL,
      `email` varchar(150) NOT NULL,
      `nom` varchar(150) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `email` (`email`),
      KEY `nom` (`nom`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    INSERT INTO `table_users` (`id`, `email`, `nom`) VALUES
    (1, 'aaaa@mail.com', 'tata'),
    (4, 'aaaa@mail.com', 'toto'),
    (8, 'aaaa@mail.com', 'tutu'),
    (101, 'bbbb@mail.com', 'bobo'),
    (1012, 'aaaa@mail.com', 'titi');
     
    CREATE TABLE IF NOT EXISTS `user_no_doublon` (
      `id` int(11) NOT NULL,
      `users_no_doublon` varchar(150) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `email` (`users_no_doublon`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    INSERT INTO `user_no_doublon` (`id`, `users_no_doublon`) VALUES
    (2, '1.1012'),
    (1, '1.8');
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2016, 10h52
  2. Réponses: 0
    Dernier message: 14/04/2016, 16h31
  3. [2008R2] Remplir une table à partir de certains champs des autres tables
    Par aounidevlop dans le forum Développement
    Réponses: 5
    Dernier message: 20/01/2015, 12h05
  4. Réponses: 5
    Dernier message: 22/04/2008, 13h12
  5. Réponses: 6
    Dernier message: 20/02/2007, 10h54

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