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 :

Requête de suppression de doublons


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 46
    Points
    46
    Par défaut Requête de suppression de doublons
    Bonjour, j'ai une table de tarifs dans laquelle il peut y avoir des doublons, pour une même référence plusieurs prix, attention les prix ne peuvent pas être identiques pour la même référence. Je souhaite, en fonction du choix de l'utilisateur exécuter une requête permettant de ne conserver de façon "DISTINCT" que l'enreg ayant le prix le plus élevé.

    jeu d'essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    tararef 	tarapnt
     LS332     10.223
     LS432       2.320
     LS907 	2.570
     LS907 	3.670
     LS907 	5.270
     LS934 	2.556
     LS934 	3.045
     LS934 	4.000
    Je sais extraire les doublons voilà ma requête



    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
     
    SELECT tararef, tarapnt
          FROM `tarifach`
          WHERE `TARAREF`
              IN (SELECT t2.`TARAREF`
                 FROM tarifach AS t2
                GROUP BY t2.`TARAREF`
                HAVING COUNT( t2.`TARAREF` ) >=2
        )
    résultat de cette requête sur un jeu d'essai
    tararef 	tarapnt
     LS907 	2.570
     LS907 	3.670
     LS907 	5.270
     LS934 	2.556
     LS934 	3.045
     LS934 	4.000
    Ce que je souhaite obtenir pour ce jeu d'essai :
    Tous les autres enregs de ta table n'ayant pas de doublons plus LS907, 5.270 et LS934, 4.000

    résultat après DELETE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     LS332     10.223
     LS432       2.320
     LS907       5.270 
     LS934       4.000
    TARAREF étant, vous l'aurez compris, la référence de l'article et TARAPNT étant le prix net de ce dernier.

    merci de m'aider à énoncer cette requête

  2. #2
    Membre habitué
    Femme Profil pro
    Database
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Database

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Points : 135
    Points
    135
    Par défaut
    Bonjour,

    Votre requête me paraît bien compliquée Pour ma part, je ferai un simple select du min et du max en regroupant par référence de produit, soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT tararef, MIN(tarapnt) As Minimum, MAX(tarapnt) As Maximum
     FROM tarifach
      GROUP BY tararef;
    Bonne continuation

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 46
    Points
    46
    Par défaut
    Désolé mais je n'ai pas été très clair. En résumé du jeu d'essai je souhaite que ma requête supprime de la table tarifs kes enregs suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     LS907 	2.570
     LS907 	3.670
     
     LS934 	2.556
     LS934 	3.045
    afin de ne conserver que ceux là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     LS907 	5.270
     LS934 	4.000
    sans oublier les enregs n'ayant pas de doublons
    merci de votre aide

  4. #4
    Membre habitué
    Femme Profil pro
    Database
    Inscrit en
    Juin 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Database

    Informations forums :
    Inscription : Juin 2010
    Messages : 125
    Points : 135
    Points
    135
    Par défaut
    Autant pour moi...

    Bon, j'ai révisé ma requête en intégrant le delete, cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DELETE *
       FROM tarifach
       WHERE (((tarifach.tarapnt) NOT IN
                             (SELECT max(tarapnt) FROM tarifach group by tararef)));
    Bonne continuation

    NB : n'oubliez pas de sauvegarder votre table source avant la suppression...

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 02/01/2012, 18h38
  2. Requête de suppression de doublons
    Par devalender dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2011, 14h58
  3. Requête de suppression des doublons
    Par deleterz dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/08/2010, 18h40
  4. Réponses: 3
    Dernier message: 26/07/2009, 10h06
  5. Requête de suppression de doublons : besoin d'aide
    Par biocorp dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2004, 17h04

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