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 et SQL. Discussion :

Suppression lignes identiques selon critères


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut Suppression lignes identiques selon critères
    Bonjour,

    Dans mon application j'ai une table avec les enregistrements ci-dessous.

    L Article Poste DateMax Supprimé
    1 Voiture A 01/01/2010
    2 Voiture B 01/01/2010
    3 Voiture C 15/04/2011
    4 Voiture C 15/04/2011 OUI
    5 Voiture D 01/01/2010


    Je cherche vainement à créer une requête pour exclure les lignes 3 et 4
    car elles correspondent aux critères suivants.

    Même Article
    Même Poste
    Même DateMAx
    et que l'une d'entre elles est "flagée" comme supprimée.

    D'avance merci pour votre aide

    StSym

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Bonsoir,
    Ca ressemble à cette file : http://www.developpez.net/forums/d10...aire-doublons/

    Tu peux utiliser une syntaxe du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete from matable t
    where dcount("*","matable","supprimé and article='" & t.article & "' and poste='"  t.poste & "' and datemax=" & t.datemax)>=1
    Attention aux ' et "

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut
    Bonsoir

    Merci pour ta réponse.
    Par contre j'avoue ne pas savoir si tu considères que ma table est nommée
    "Matable" ou "t".

    J'ai essayé le code suivant en nommant la table "Matable"mais il ne supprime pas les doublons.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE *
    FROM Matable
    WHERE dcount("*","Matable","supprimé and article='" & Matable.article & "' and poste='" & Matable.poste & "' and datemax=" & Matable.datemax)>=1;

    Merci
    StSym

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Comme la requete interroge 2 fois la même table, j'ai mis l'alias t au 1er appel pour que l'interpréteur puisse les distinguer

    Ceci dit avec dcount je ne suis pas sûr que ce soit nécessaire... Je suis donc surpris que ça ne marche pas

    Essaie pour commencer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from matable t
    where dcount("*","matable","supprimé and article='" & t.article & "' and poste='"  t.poste & "' and datemax=" & t.datemax)>=1
    et modifie les conditions du dcount pour voir ce qui se passe...

    supprimé est bien un booléen ? par précaution je ne mets jamais d'accents ni d'espace dans mes variables !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut
    Bonjour Nico84
    Merci pour ton message.
    J'ai essayé ton code en ajoutant une esperluette devant le dernier "t.poste".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM matable AS t
    WHERE dcount("*","matable","supprimé and article='" & t.article & "' and poste='"  &t.poste & "' and datemax=" & t.datemax)>=1;
    La réquète fonctionne mais ne retourne pas la ligne 3 et 4 comme doublons selon les critères définis.
    J'ai modifié les conditions (en fonction de mes connaissances) mais n'arrive pas au résultat souhaité.
    J'ai aussi essayé la condition >=2 car pour moi elle correspond ( peut-être à tort) à des doublons.
    Que nenni !La requète est toujours vide.
    Tu demandes si "Supprimé" est booléen.
    Dans la table "Matable" ce champ est de type "texte".
    J'espère avoir bien présenté mon problème car ce qui me gène , c'est que pour toi le résultat est évident.

    Encore merci pour ton aide.
    StSym

  6. #6
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    Ne serait-ce pas un problème avec les champs de type DATE/TIME?
    Essayez de convertir vos champs datemax sous la forme (DD/MM/YYYY) avec la fonction DATEPART par exemple.
    Quelque chose de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM matable AS t
    WHERE dcount("*","matable","supprimé and article='" & t.article & "' and poste='"  &t.poste & "' and'" & DATEPART("DD/MM/YYYY",datemax)"'=" & DATEPART("DD/MM/YYYY",t.datemax))>=1;

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

Discussions similaires

  1. [XL-2013] Macro suppression de lignes selon critère - fichier volumineux
    Par demeter dans le forum Excel
    Réponses: 9
    Dernier message: 13/06/2014, 18h28
  2. Suppression lignes vides selon critères
    Par stsym dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/05/2013, 07h36
  3. Suppression de lignes selon critères
    Par gege765 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/10/2012, 19h41
  4. [XL-2000] Suppression plage colonne selon critères
    Par Tydher dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/04/2011, 12h45
  5. [XL-2002] Suppression lignes identiques
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/05/2010, 18h59

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