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 :

Epurer une table mysql


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Epurer une table mysql
    Bonjour,

    J'ai un table TABLE contenant les deux champs suivants:

    JOUR(INT),NOM(VARCHAR)

    Chaque nom peut apparaître plusieurs fois avec à chaque fois un JOUR différent.
    name1;21
    name2;12
    name3,24
    name1;24
    name2;56
    name3;89
    name1;78
    name1;15
    name3;25
    name1;36
    name2;79
    name1;11

    Je souhaite récupérer de cette table la liste (NOM,JOUR) dès 5 premières occurrences des jours les plus haut par nom:

    Resultat:
    name1;79
    name1;78
    name1;24
    name1;21
    name1;15
    name2;79
    name2;56
    name2;12
    name3;89
    name3;25
    name3;24
    J'ai essayé avec un champ supplémentaire (KEEP), une table COPIE_TABLE identique, en suivant la démarche suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE COPIE_TABLE LIKE  TABLE;
     
    #5 itération du code suivant: 
    {
    INSERT COPIE_TABLE SELECT * FROM TABLE;
    update TABLE set TABLE.KEEP = 'O' where (JOUR, NOM) IN ( SELECT max(JOUR), NOM from COPIE_TABLE where KEEP !='O' group by NOM ); 
    DELETE FROM "$table2;
    }
    Pour récupérer mon résultat je fait une requête pour trouver tout les enregistrement de la table TABLE contenant O dans le champs KEEP.
    Cette requête fonctionne bien pour de toutes petites tables, or il se trouve que j'ai une table avec plus de 800 000 enregistrement et lorsque j'éxécute la première requête update, le calcul est interminable et au bout d'un moment mysql plante....

    Que puis-je faire pour obtenir le résultat souhaité ?

    Merci d'avance,

    Orangepulpe.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Les champs sont à la campagne ou dans les formulaires, pas dans les tables SQL qui ne sont composées que de colonnes et de lignes !

    Ce code devrait t'être utile.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Es-ce possible de créer une table MySQL avec MS Excel
    Par pierrot10 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 16/10/2005, 06h30
  2. Vider une table MySQL suite à javascript:confirm()
    Par anutka dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 16/09/2005, 12h16
  3. Connaître le type d'un champs d'une table Mysql
    Par xoran dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/07/2005, 09h29
  4. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 11h03

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