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

PHP & Base de données Discussion :

mysql php doublons [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Par défaut mysql php doublons
    Bonjour à tous,

    Voici mon problème :
    J'ai une table qui comporte un identifiant de formateur et un timestamp
    Je voudrais trouver (trouver, pas empêcher de se produire) les doublons sachant qu'un doublon concerne un formateur qui a deux enregistrements dont un des deux timestamp est compris entre le timestamp de l'autre et le timestamp de l'autre + 6000.
    Exemple :
    id timestamp
    1 1312180200
    2 1412520225
    1 1312180500
    Il y a un doublon antre la première ligne et la troisième même id et timestamp compris entre 131218022 et 1312186200

    Jusque maintenant je résous mon problème avec un traitement en php
    Existe-t'il une solution en utilisant une requête (la table contient entre 100.000 et 150.000 enregistrements)

  2. #2
    Membre Expert
    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
    Par défaut
    ya plusieurs solutions, soit par requete interposé, parce que la charge sur la base de données est faible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select id, timestamp 
    from ma_table as t1, ma_table as t2
    where t1.timestamp > t2.timestamp
    and ( t2.timestamp - t1.timestamp < 6000)

    sinon tu ajoutes une colonne supplémentaire qui contient timestamp / 6000 du coup il te suffit de chercher les t1.tsbis = t2.tsbis ou t1.tsbis= t2.tsbis+1

  3. #3
    Membre chevronné Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Par défaut
    Bonsoir et merci pour votre réponse.
    J'ai essayé votre solution, j'ai du faire un kill de mysqld après 15 minutes.
    J'ai 120.000 enregistrements dans ma table, la requête que vous me proposez compare chaque ligne de la table à toutes les lignes de la table en gros 14.400.000.000 opérations.

    J'ai simlpifié le problème à outrance, en réalité j'ai plus de champs à comparer que ce que je ne vous ai donné, mais le principe reste correct.

    Mon traitement en php ne dure que 4 ou 5 minutes et est appelé par une tâche cron.

    Je pense que je vais en rester là.

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

Discussions similaires

  1. Conversion appli php/MySQL -> php/MsSQL - Prenage de tête
    Par Joelindien dans le forum MS SQL Server
    Réponses: 19
    Dernier message: 02/09/2008, 17h40
  2. [Mysql/PHP] probleme doublon requetes
    Par jedi186 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/02/2007, 13h49
  3. [mysql][php]aucune base selectionnée
    Par Destampy dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/06/2005, 10h21
  4. Types de variables entre mysql/php et flash
    Par ramses83 dans le forum Flash
    Réponses: 2
    Dernier message: 06/10/2003, 18h35
  5. Réponses: 14
    Dernier message: 17/03/2003, 18h31

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