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 :

Fonction DELETE avec critères spécifiques


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 53
    Points : 34
    Points
    34
    Par défaut Fonction DELETE avec critères spécifiques
    Bonjour à tous,

    Alors voilà je recherche une solution pour supprimer des lignes selon un critère bien spécifique.
    J’ai plusieurs référence dans la colonne [Reference], je souhaite que quand la référence = « INGP » il me supprime la ligne au-dessus (qui est la contrepartie associe).

    Je m’explique, je bosse sur des rapports de transactions et je dois supprimer certaine contrepartie selon certaines références. Ici c’est la référence INGP.

    La ligne contrepartie n’a aucun critère qui puisse l’identifier globalement pour toutes les références INGP, d’où la difficulté, puisse chaque transaction possède un numéro unique.
    Un même numéro de transaction lie la référence et sa contrepartie.
    Du coup je ne peux pas me contenter de supprimer toutes les contreparties puisque je dois en garder.

    Voici une structure simplifie de ma table, la première ligne étant celle à supprimer mais pas la numéro 3 car associe à une référence différente (CORP) :
    [Trade ID] [Reference]
    1 1234
    2 1234 INGP
    3 1235
    4 1235 CORP

    Je redoute de devoir passer par une macro, ou peut être un DELETE… WHERE assez avance ?

    Merci d’avance.

    Bonne journée a tous

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    A part utiliser un recordset et boucler dessus, je ne vois pas comment une requête pourrait réussir à faire ça.

  3. #3
    Membre expérimenté
    Avatar de minot83
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2006
    Messages
    972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 972
    Points : 1 430
    Points
    1 430
    Par défaut
    Salut,

    ou en décomposant :
    - une 1ere requête affichant les lignes avec INGP
    - une seconde requête faisant intervenir la table initiale et la 1ere requête liées sur la colonne Trade ID, avec en critère Null sur la colonne Reference.

    Ce qui donne :
    1ere requête R_INGP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1.[Trade ID], Table1.Reference
    FROM Table1
    WHERE (((Table1.Reference)="INGP"));
    2de requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1.[Trade ID], Table1.Reference
    FROM Table1 INNER JOIN R_INGP ON Table1.[Trade ID] = R_INGP.[Trade ID]
    WHERE (((Table1.Reference) Is Null));
    Avec bien sûr la requête action de suppression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE Table1.[Trade ID], Table1.Reference
    FROM Table1 INNER JOIN R_INGP ON Table1.[Trade ID] = R_INGP.[Trade ID]
    WHERE (((Table1.Reference) Is Null));
    si le message est pertinent : un petit si votre problème est résolu, n'oubliez pas le Tag Merci

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Merci de vos reponses. Jai finalement choisis de passer en Visual Basic via excel (avant l'import de ma table) pour ne pas "encombrer" ma BD deja assez fournis comme ca.

    Bonne continuation.

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

Discussions similaires

  1. [Formule]Fonction BDMAX avec critère dynamique
    Par blepy dans le forum Excel
    Réponses: 3
    Dernier message: 19/07/2019, 12h24
  2. Requête DELETE avec critère
    Par planete.gonz dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/01/2009, 11h18
  3. Recherche En vba Excel en fonction d'un critère spécifique
    Par lyndakab dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/03/2008, 16h28
  4. DELETE avec critère
    Par houba95 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/10/2007, 18h25
  5. [XPath] chemin avec critères spécifiques
    Par loic_86 dans le forum XSL/XSLT/XPATH
    Réponses: 21
    Dernier message: 05/03/2007, 11h21

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