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 :

Recherche et effacement de doublons


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Recherche et effacement de doublons
    Bonsoir à toutes et tous,

    Nouveau sur ce forum, je sollicite de votre part une réponse à cette simple question pour les PRO MySQL :-) :

    J'ai deux tables :
    1) Table 'site', contenant les champs : id (auto-incrémant) primaire, date, nom
    2) Table 'site_info', contenant les champs : id (auto-incrémant) primaire, site_id, texte, divers, langue

    Mon code PHP injecte correctement les données dans les deux tables. Ca, c'est simple. Les données proviennent d'un fichier externe.

    Les exemples suivants arrivent toujours et sont normaux :

    Table 'site'
    1 - 02.11.2010 10:55 - travail

    2 - 02.11.2010 11:37 - travail

    3 - 03.11.2010 04:12 - tourte
    ...
    Table 'site_info'
    1 - 1 - ceci est un test - divers - 2
    2 - 1 - essai xxx - divers - 2

    3 - 2 - ceci est un test - divers - 2
    4 - 2 - essai xxx - divers - 2

    5 - 3 - essai xxx - divers - 2
    6 - 3 - encore un autre test - divers - 2
    7 - 3 - un autre test - divers - 2
    8 - 3 - essai - autre - 2
    ...

    Comme vous le voyez, la Table 'site' est liée à la Table 'site_info' par le champ id et site_id.

    Tout fonctionne et c'est en ordre.

    Cependant, je recherche à faire ceci :

    Rechercher les doublons de la Table 'site_info' et ne garder seulement la dernière valeur en fonction de la dernière date de la Table 'site'. Les doublons seraient effacés de la base de données. Ce qui donnerait au final :

    Table 'site_info'
    //-> retiré-effacé : 1 - 1 - ceci est un test - divers - 2
    //-> retiré-effacé : 2 - 1 - essai xxx - divers - 2

    3 - 2 - ceci est un test - divers - 2
    //-> retiré-effacé : 4 - 2 - essai xxx - divers - 2

    5 - 3 - essai xxx - divers - 2
    6 - 3 - encore un autre test - divers - 2
    7 - 3 - un autre test - divers - 2
    8 - 3 - essai - autre - 2

    Merci pour vos commentaires

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    c'est pour faire une suppression manuelle ou scriptée?

    je verai une requete dans ce genre.. qui utilise la monotonie croissante de l'autoincrement;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DELETE site_info as effacable 
     WHERE EXISTS ( 
     SELECT * 
     FROM site_info as autre
     WHERE autre.id > effacable.id AND autre.site_id = effacable.site_id 
    )
    j'ai pas vérifié la syntaxe de la requete... il me semble que certains sgbd refuse d'ouvrir une table en lecture lorsqu'on est en train de la modifier.

    Une fois la situation rétablie, la soluce durable c'est clée d'unicité avec la clause 100% pas standard "ON DUPLICATE UPDATE" et son pendant INSERT IGNORE.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    c'est pour faire une suppression manuelle ou scriptée?
    Bonjour gene69,

    merci pour le commentaire, je vais faire le test ce matin. Et pour répondre à la question : je préfère faire une suppression scriptée, si possible.

    A+

    J'ai essayé le code, mais il ne fonctionne pas. Je pense que celui-ci correspondrait pour un effacement après une autre requête, car je reçois le message :
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE EXISTS ( SELECT * FROM site_info AS autre WHERE autre.' at line 2

Discussions similaires

  1. Recherche d'emplacement de doublons
    Par solorac dans le forum Excel
    Réponses: 12
    Dernier message: 17/07/2007, 17h37
  2. [VBA-E]Problème de triet effacement de doublon sur boucle
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/09/2006, 11h06
  3. Comment effacer les doublons ?
    Par James64 dans le forum Bases de données
    Réponses: 4
    Dernier message: 14/11/2005, 16h15
  4. Comment effacer les Doublons en SQL
    Par LeBigornot dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/05/2005, 10h22
  5. Effacer des doublons
    Par ben53 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/07/2004, 17h56

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