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

Langage SQL Discussion :

DELETE et WHERE EXISTS


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 35
    Par défaut DELETE et WHERE EXISTS
    je voudrais savoir si on peut utiliser le WHERE EXISTS pour faire un DELETE?
    par exemple : supprimer des lignes d'une commande selon la valeur d'une colonne de la table des entetes (par ex des commandes à supprimer dont TOPSUP ='1')
    merci de vos réponses

  2. #2
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Bonjour,

    peux tu fournir la structure de tes tables s'il te plait ?, normalement il ne devrait pas y avoir de soucis à utiliser le exists dans delete. Mais on peut également trouver une autre solution.

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 35
    Par défaut
    j'ai la table des entetes : OPE_DAT et la table des lignes OPL_DAT
    le lien de ces 2 tables et la colonne OPE_NOOE
    dans OPE_DAT la colonne OPE_STAT peut prendre les valeur '010', '020', '030' et '040'.
    je veux supprimer les lignes dont les entetes ont OPE_STAT à '010' ou '040', et ensuite je dois supprimer les entetes
    suis-je assez clair?
    merci

  4. #4
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Lorsque tu as créé tes tables, as tu ajouté le on delete cascade sur tes entêtes? car du coup, la suppression des entêtes suffirait à supprimer également les lignes.

    Sinon il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DELETE FROM OPL_DAT WHERE OPE_NOOE IN (SELECT OPE_NOOE FROM OPE_DAT WHERE OPE_STAT='010' OR OPE_STAT='040')
     
    puis
     
    DELETE FROM OPE_DAT WHERE OPE_STAT='010' OR OPE_STAT='040'

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 35
    Par défaut
    merci pour les infos.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Par défaut
    Je ne sais pas si le ON DELETE CASCADE est disponible sur tous les SGBD.
    Par contre, il nécessite d'avoir déclaré les clés étrangères.

Discussions similaires

  1. DELETE FROM . . . WHERE EXISTS
    Par tfc3146 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/08/2011, 12h33
  2. Besoin d'explication pour WHERE EXISTS(SELECT NULL..
    Par Mr Pink Eyes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/06/2007, 11h22
  3. Doublon due à une sous requete WHERE EXISTS
    Par polemoss dans le forum Outils
    Réponses: 1
    Dernier message: 19/03/2007, 17h49
  4. Delete * From * Where ?!
    Par gui38 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/12/2006, 10h51
  5. problème requete : DELETE pr0 WHERE num1 in(select ..
    Par pierre.egaud dans le forum Oracle
    Réponses: 10
    Dernier message: 21/11/2006, 11h34

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