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

 MySQL Discussion :

un melange de DELETE SELECT IN COUNT HAVING COUNT


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 13
    Points
    13
    Par défaut un melange de DELETE SELECT IN COUNT HAVING COUNT
    Je possede une table routings

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    id_routing   id_facture
    1            104
    2            112
    3            112
    4            126
    5            128
    6            129
    7            129
    8            129
    9            146
    10           146

    Mon but est d'avoir pour chaque id_facture, une seule id_routing et la plus recente (soit la id_routing la plus grande)
    et donc de supprimer tous les autres doublons. et garder ce qui est en gras


    (SELECT_1) Je selectionne les id_facture qui ne sont pas unique :

    SELECT id_facture FROM routings GROUP BY id_facture HAVING count(id_facture) > 1 ORDER by id_facture DESC


    (SELECT_2) je selectionne les id_routing doublons :

    SELECT id_routing FROM routings WHERE id_facture = (SELECT_1) ORDER by id_routing DESC LIMIT 1,100 (LIMIT 1, 100 ainsi je deselectionne la id_routing la plus grande)


    je supprime les id_routing trouvé dans la selection avant

    DELETE FROM routings WHERE id_routing IN (SELECT_2)


    Est ce que vous pouvez m'aider à depatouiller tous cela en une seule commande mysql

  2. #2
    Membre confirmé Avatar de Sebwar
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 172
    Points : 498
    Points
    498
    Par défaut
    Bonjour sharukan,

    Une petite jointure et c'est réglé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE a FROM routings a INNER JOIN routings b ON a.id_routing < b.id_routing AND a.id_facture = b.id_facture

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    Lol j'ai eu la meme reaction, que quand j'étais au lycée et qu'on me montrait la solution à un probleme. Ma réaction : "aaaahhhhh oui c était tout simple en vrai, et je me suis cassé la tete pour rien "

    merci beaucoup

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

Discussions similaires

  1. [SQL Server] select max d'un count ?
    Par chess75 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 28/08/2017, 14h38
  2. Requete SELECT Count(x)/Count(y)
    Par ahage4x4 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/06/2006, 15h26
  3. [Sql]Having Count ( Distinct )
    Par nuke_y dans le forum Oracle
    Réponses: 5
    Dernier message: 20/02/2006, 21h36
  4. Delete + selection avec jointure
    Par kluh dans le forum Oracle
    Réponses: 4
    Dernier message: 15/11/2005, 10h44
  5. [requête] DELETE + SELECT
    Par doohan dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/07/2003, 12h27

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